library(ggplot2)
library(gridExtra)
library(GGally)
library(corrplot)
library(dplyr)
library(tidyr)
library(viridis)
library(reshape2)
# Configuración general
theme_set(theme_minimal(base_size = 11))
# NOTA: Reemplazar 'ckd_data' con el nombre real de tu dataframe
getwd()
[1] "/Users/samircabrera/Development/Universidad/Inteligencia Artificial/Inteligencia-Artificial/Proyecto/Code/plots"
setwd("/Users/samircabrera/Development/Universidad/Inteligencia Artificial/Inteligencia-Artificial")
ckd_data <- read.csv("/Users/samircabrera/Development/Universidad/Inteligencia Artificial/Inteligencia-Artificial/Proyecto/Dataset/Chronic_Kidney_Dsease_data.csv")
head(datos)
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdF9jb3JyZWxhdGlvbl9tYXRyaXggPC0gZnVuY3Rpb24oZGF0YSkge1xuICAjIFNlbGVjY2lvbmFyIHNvbG8gdmFyaWFibGVzIG51bcOpcmljYXMgcmVsZXZhbnRlc1xuICBudW1lcmljX3ZhcnMgPC0gZGF0YSAlPiUgXG4gICAgc2VsZWN0KEFnZSwgQk1JLCBTeXN0b2xpY0JQLCBEaWFzdG9saWNCUCwgRmFzdGluZ0Jsb29kU3VnYXIsIEhiQTFjLFxuICAgICAgICAgICBTZXJ1bUNyZWF0aW5pbmUsIEJVTkxldmVscywgR0ZSLCBQcm90ZWluSW5VcmluZSwgQUNSLFxuICAgICAgICAgICBIZW1vZ2xvYmluTGV2ZWxzLCBDaG9sZXN0ZXJvbFRvdGFsLCBDaG9sZXN0ZXJvbExETCxcbiAgICAgICAgICAgRmF0aWd1ZUxldmVscywgUXVhbGl0eU9mTGlmZVNjb3JlLCBNZWRpY2F0aW9uQWRoZXJlbmNlKVxuICBcbiAgY29yX21hdHJpeCA8LSBjb3IobnVtZXJpY192YXJzLCB1c2UgPSBcImNvbXBsZXRlLm9ic1wiKVxuICBcbiAgY29ycnBsb3QoY29yX21hdHJpeCwgXG4gICAgICAgICAgIG1ldGhvZCA9IFwiY29sb3JcIixcbiAgICAgICAgICAgdHlwZSA9IFwidXBwZXJcIixcbiAgICAgICAgICAgb3JkZXIgPSBcImhjbHVzdFwiLCAgIyBBZ3J1cGFjacOzbiBqZXLDoXJxdWljYVxuICAgICAgICAgICBhZGRyZWN0ID0gNCwgICAgICAgIyBNYXJjYSA0IGNsdXN0ZXJzIHByaW5jaXBhbGVzXG4gICAgICAgICAgIHRsLmNvbCA9IFwiYmxhY2tcIixcbiAgICAgICAgICAgdGwuc3J0ID0gNDUsXG4gICAgICAgICAgIHRsLmNleCA9IDAuOCxcbiAgICAgICAgICAgY29sID0gY29sb3JSYW1wUGFsZXR0ZShjKFwiIzZEOUVDMVwiLCBcIndoaXRlXCIsIFwiI0U0NjcyNlwiKSkoMjAwKSxcbiAgICAgICAgICAgdGl0bGUgPSBcIk1hdHJpeiBkZSBDb3JyZWxhY2nDs24gY29uIENsdXN0ZXJpbmcgSmVyw6FycXVpY29cIixcbiAgICAgICAgICAgbWFyID0gYygwLDAsMiwwKSlcbn1cbmBgYCJ9 -->
```r
plot_correlation_matrix <- function(data) {
# Seleccionar solo variables numéricas relevantes
numeric_vars <- data %>%
select(Age, BMI, SystolicBP, DiastolicBP, FastingBloodSugar, HbA1c,
SerumCreatinine, BUNLevels, GFR, ProteinInUrine, ACR,
HemoglobinLevels, CholesterolTotal, CholesterolLDL,
FatigueLevels, QualityOfLifeScore, MedicationAdherence)
cor_matrix <- cor(numeric_vars, use = \complete.obs\)
corrplot(cor_matrix,
method = \color\,
type = \upper\,
order = \hclust\, # Agrupación jerárquica
addrect = 4, # Marca 4 clusters principales
tl.col = \black\,
tl.srt = 45,
tl.cex = 0.8,
col = colorRampPalette(c(\#6D9EC1\, \white\, \#E46726\))(200),
title = \Matriz de Correlación con Clustering Jerárquico\,
mar = c(0,0,2,0))
}
```
<!-- rnb-source-end -->
```r
plot_correlation_matrix <- function(data) {
# Seleccionar solo variables numéricas relevantes
numeric_vars <- data %>%
select(Age, BMI, SystolicBP, DiastolicBP, FastingBloodSugar, HbA1c,
SerumCreatinine, BUNLevels, GFR, ProteinInUrine, ACR,
HemoglobinLevels, CholesterolTotal, CholesterolLDL,
FatigueLevels, QualityOfLifeScore, MedicationAdherence)
cor_matrix <- cor(numeric_vars, use = \complete.obs\)
corrplot(cor_matrix,
method = \color\,
type = \upper\,
order = \hclust\, # Agrupación jerárquica
addrect = 4, # Marca 4 clusters principales
tl.col = \black\,
tl.srt = 45,
tl.cex = 0.8,
col = colorRampPalette(c(\#6D9EC1\, \white\, \#E46726\))(200),
title = \Matriz de Correlación con Clustering Jerárquico\,
mar = c(0,0,2,0))
}
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjR3h2ZEY5eVpXNWhiRjl3WVdseWN5QThMU0JtZFc1amRHbHZiaWhrWVhSaEtTQjdYRzRnSUhKbGJtRnNYMlJoZEdFZ1BDMGdaR0YwWVNBbFBpVmNiaUFnSUNCelpXeGxZM1FvUjBaU0xDQlRaWEoxYlVOeVpXRjBhVzVwYm1Vc0lFSlZUa3hsZG1Wc2N5d2dVSEp2ZEdWcGJrbHVWWEpwYm1Vc0lFRkRVaXdnUkdsaFoyNXZjMmx6S1NBbFBpVmNiaUFnSUNCdGRYUmhkR1VvUkdsaFoyNXZjMmx6SUQwZ1ptRmpkRzl5S0VScFlXZHViM05wY3l3Z2JHRmlaV3h6SUQwZ1l5aGNJazV2SUVOTFJGd2lMQ0JjSWtOTFJGd2lLU2twWEc0Z0lGeHVJQ0JuWjNCaGFYSnpLSEpsYm1Gc1gyUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ1kyOXNkVzF1Y3lBOUlERTZOU3hjYmlBZ0lDQWdJQ0FnSUNCaFpYTW9ZMjlzYjNJZ1BTQkVhV0ZuYm05emFYTXNJR0ZzY0doaElEMGdNQzQxS1N4Y2JpQWdJQ0FnSUNBZ0lDQjFjSEJsY2lBOUlHeHBjM1FvWTI5dWRHbHVkVzkxY3lBOUlIZHlZWEFvWENKamIzSmNJaXdnYzJsNlpTQTlJRE1wS1N4Y2JpQWdJQ0FnSUNBZ0lDQnNiM2RsY2lBOUlHeHBjM1FvWTI5dWRHbHVkVzkxY3lBOUlIZHlZWEFvWENKd2IybHVkSE5jSWl3Z1lXeHdhR0VnUFNBd0xqTXNJSE5wZW1VZ1BTQXdMalVwS1N4Y2JpQWdJQ0FnSUNBZ0lDQmthV0ZuSUQwZ2JHbHpkQ2hqYjI1MGFXNTFiM1Z6SUQwZ2QzSmhjQ2hjSW1SbGJuTnBkSGxFYVdGblhDSXNJR0ZzY0doaElEMGdNQzQxS1Nrc1hHNGdJQ0FnSUNBZ0lDQWdkR2wwYkdVZ1BTQmNJbEpsYkdGamFXOXVaWE1nWlc1MGNtVWdUV0Z5WTJGa2IzSmxjeUJTWlc1aGJHVnpJQ2h3YjNJZ1JHbGhaMjV2YzJsektWd2lLU0FyWEc0Z0lDQWdkR2hsYldVb2NHeHZkQzUwYVhSc1pTQTlJR1ZzWlcxbGJuUmZkR1Y0ZENob2FuVnpkQ0E5SURBdU5Td2dabUZqWlNBOUlGd2lZbTlzWkZ3aUtTbGNibjFjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbnBsb3RfcmVuYWxfcGFpcnMgPC0gZnVuY3Rpb24oZGF0YSkge1xuICByZW5hbF9kYXRhIDwtIGRhdGEgJT4lXG4gICAgc2VsZWN0KEdGUiwgU2VydW1DcmVhdGluaW5lLCBCVU5MZXZlbHMsIFByb3RlaW5JblVyaW5lLCBBQ1IsIERpYWdub3NpcykgJT4lXG4gICAgbXV0YXRlKERpYWdub3NpcyA9IGZhY3RvcihEaWFnbm9zaXMsIGxhYmVscyA9IGMoXFxObyBDS0RcXCwgXFxDS0RcXCkpKVxuICBcbiAgZ2dwYWlycyhyZW5hbF9kYXRhLFxuICAgICAgICAgIGNvbHVtbnMgPSAxOjUsXG4gICAgICAgICAgYWVzKGNvbG9yID0gRGlhZ25vc2lzLCBhbHBoYSA9IDAuNSksXG4gICAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFxcY29yXFwsIHNpemUgPSAzKSksXG4gICAgICAgICAgbG93ZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFxccG9pbnRzXFwsIGFscGhhID0gMC4zLCBzaXplID0gMC41KSksXG4gICAgICAgICAgZGlhZyA9IGxpc3QoY29udGludW91cyA9IHdyYXAoXFxkZW5zaXR5RGlhZ1xcLCBhbHBoYSA9IDAuNSkpLFxuICAgICAgICAgIHRpdGxlID0gXFxSZWxhY2lvbmVzIGVudHJlIE1hcmNhZG9yZXMgUmVuYWxlcyAocG9yIERpYWdub3NpcylcXCkgK1xuICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSBcXGJvbGRcXCkpXG59XG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
plot_renal_pairs <- function(data) {
renal_data <- data %>%
select(GFR, SerumCreatinine, BUNLevels, ProteinInUrine, ACR, Diagnosis) %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggpairs(renal_data,
columns = 1:5,
aes(color = Diagnosis, alpha = 0.5),
upper = list(continuous = wrap(\cor\, size = 3)),
lower = list(continuous = wrap(\points\, alpha = 0.3, size = 0.5)),
diag = list(continuous = wrap(\densityDiag\, alpha = 0.5)),
title = \Relaciones entre Marcadores Renales (por Diagnosis)\) +
theme(plot.title = element_text(hjust = 0.5, face = \bold\))
}
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dWNHeHZkRjl5Wlc1aGJGOXdZV2x5Y3lBOExTQm1kVzVqZEdsdmJpaGtZWFJoS1NCN1hHNGdJSEpsYm1Gc1gyUmhkR0VnUEMwZ1pHRjBZU0FsUGlWY2JpQWdJQ0J6Wld4bFkzUW9SMFpTTENCVFpYSjFiVU55WldGMGFXNXBibVVzSUVKVlRreGxkbVZzY3l3Z1VISnZkR1ZwYmtsdVZYSnBibVVzSUVGRFVpd2dSR2xoWjI1dmMybHpLU0FsUGlWY2JpQWdJQ0J0ZFhSaGRHVW9SR2xoWjI1dmMybHpJRDBnWm1GamRHOXlLRVJwWVdkdWIzTnBjeXdnYkdGaVpXeHpJRDBnWXloY1hFNXZJRU5MUkZ4Y0xDQmNYRU5MUkZ4Y0tTa3BYRzRnSUZ4dUlDQm5aM0JoYVhKektISmxibUZzWDJSaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnWTI5c2RXMXVjeUE5SURFNk5TeGNiaUFnSUNBZ0lDQWdJQ0JoWlhNb1kyOXNiM0lnUFNCRWFXRm5ibTl6YVhNc0lHRnNjR2hoSUQwZ01DNDFLU3hjYmlBZ0lDQWdJQ0FnSUNCMWNIQmxjaUE5SUd4cGMzUW9ZMjl1ZEdsdWRXOTFjeUE5SUhkeVlYQW9YRnhqYjNKY1hDd2djMmw2WlNBOUlETXBLU3hjYmlBZ0lDQWdJQ0FnSUNCc2IzZGxjaUE5SUd4cGMzUW9ZMjl1ZEdsdWRXOTFjeUE5SUhkeVlYQW9YRnh3YjJsdWRITmNYQ3dnWVd4d2FHRWdQU0F3TGpNc0lITnBlbVVnUFNBd0xqVXBLU3hjYmlBZ0lDQWdJQ0FnSUNCa2FXRm5JRDBnYkdsemRDaGpiMjUwYVc1MWIzVnpJRDBnZDNKaGNDaGNYR1JsYm5OcGRIbEVhV0ZuWEZ3c0lHRnNjR2hoSUQwZ01DNDFLU2tzWEc0Z0lDQWdJQ0FnSUNBZ2RHbDBiR1VnUFNCY1hGSmxiR0ZqYVc5dVpYTWdaVzUwY21VZ1RXRnlZMkZrYjNKbGN5QlNaVzVoYkdWeklDaHdiM0lnUkdsaFoyNXZjMmx6S1Z4Y0tTQXJYRzRnSUNBZ2RHaGxiV1VvY0d4dmRDNTBhWFJzWlNBOUlHVnNaVzFsYm5SZmRHVjRkQ2hvYW5WemRDQTlJREF1TlN3Z1ptRmpaU0E5SUZ4Y1ltOXNaRnhjS1NsY2JuMWNibUJnWUZ4dVlHQmdJbjA9IC0tPlxuXG5gYGByXG5gYGByXG5wbG90X3JlbmFsX3BhaXJzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgcmVuYWxfZGF0YSA8LSBkYXRhICU+JVxuICAgIHNlbGVjdChHRlIsIFNlcnVtQ3JlYXRpbmluZSwgQlVOTGV2ZWxzLCBQcm90ZWluSW5VcmluZSwgQUNSLCBEaWFnbm9zaXMpICU+JVxuICAgIG11dGF0ZShEaWFnbm9zaXMgPSBmYWN0b3IoRGlhZ25vc2lzLCBsYWJlbHMgPSBjKFxcTm8gQ0tEXFwsIFxcQ0tEXFwpKSlcbiAgXG4gIGdncGFpcnMocmVuYWxfZGF0YSxcbiAgICAgICAgICBjb2x1bW5zID0gMTo1LFxuICAgICAgICAgIGFlcyhjb2xvciA9IERpYWdub3NpcywgYWxwaGEgPSAwLjUpLFxuICAgICAgICAgIHVwcGVyID0gbGlzdChjb250aW51b3VzID0gd3JhcChcXGNvclxcLCBzaXplID0gMykpLFxuICAgICAgICAgIGxvd2VyID0gbGlzdChjb250aW51b3VzID0gd3JhcChcXHBvaW50c1xcLCBhbHBoYSA9IDAuMywgc2l6ZSA9IDAuNSkpLFxuICAgICAgICAgIGRpYWcgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFxcZGVuc2l0eURpYWdcXCwgYWxwaGEgPSAwLjUpKSxcbiAgICAgICAgICB0aXRsZSA9IFxcUmVsYWNpb25lcyBlbnRyZSBNYXJjYWRvcmVzIFJlbmFsZXMgKHBvciBEaWFnbm9zaXMpXFwpICtcbiAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXFxib2xkXFwpKVxufVxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxucGxvdF9yZW5hbF9wYWlycyA8LSBmdW5jdGlvbihkYXRhKSB7XG4gIHJlbmFsX2RhdGEgPC0gZGF0YSAlPiVcbiAgICBzZWxlY3QoR0ZSLCBTZXJ1bUNyZWF0aW5pbmUsIEJVTkxldmVscywgUHJvdGVpbkluVXJpbmUsIEFDUiwgRGlhZ25vc2lzKSAlPiVcbiAgICBtdXRhdGUoRGlhZ25vc2lzID0gZmFjdG9yKERpYWdub3NpcywgbGFiZWxzID0gYyhcXE5vIENLRFxcLCBcXENLRFxcKSkpXG4gIFxuICBnZ3BhaXJzKHJlbmFsX2RhdGEsXG4gICAgICAgICAgY29sdW1ucyA9IDE6NSxcbiAgICAgICAgICBhZXMoY29sb3IgPSBEaWFnbm9zaXMsIGFscGhhID0gMC41KSxcbiAgICAgICAgICB1cHBlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoXFxjb3JcXCwgc2l6ZSA9IDMpKSxcbiAgICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IHdyYXAoXFxwb2ludHNcXCwgYWxwaGEgPSAwLjMsIHNpemUgPSAwLjUpKSxcbiAgICAgICAgICBkaWFnID0gbGlzdChjb250aW51b3VzID0gd3JhcChcXGRlbnNpdHlEaWFnXFwsIGFscGhhID0gMC41KSksXG4gICAgICAgICAgdGl0bGUgPSBcXFJlbGFjaW9uZXMgZW50cmUgTWFyY2Fkb3JlcyBSZW5hbGVzIChwb3IgRGlhZ25vc2lzKVxcKSArXG4gICAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSwgZmFjZSA9IFxcYm9sZFxcKSlcbn1cbmBgYFxuYGBgIn0= -->
```r
```r
plot_renal_pairs <- function(data) {
renal_data <- data %>%
select(GFR, SerumCreatinine, BUNLevels, ProteinInUrine, ACR, Diagnosis) %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggpairs(renal_data,
columns = 1:5,
aes(color = Diagnosis, alpha = 0.5),
upper = list(continuous = wrap(\cor\, size = 3)),
lower = list(continuous = wrap(\points\, alpha = 0.3, size = 0.5)),
diag = list(continuous = wrap(\densityDiag\, alpha = 0.5)),
title = \Relaciones entre Marcadores Renales (por Diagnosis)\) +
theme(plot.title = element_text(hjust = 0.5, face = \bold\))
}
```
```
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjR3h2ZEY5blpuSmZNMlFnUEMwZ1puVnVZM1JwYjI0b1pHRjBZU2tnZTF4dUlDQmtZWFJoWDNCc2IzUWdQQzBnWkdGMFlTQWxQaVZjYmlBZ0lDQnRkWFJoZEdVb1JHbGhaMjV2YzJseklEMGdabUZqZEc5eUtFUnBZV2R1YjNOcGN5d2diR0ZpWld4eklEMGdZeWhjSWs1dklFTkxSRndpTENCY0lrTkxSRndpS1NrcFhHNGdJRnh1SUNCblozQnNiM1FvWkdGMFlWOXdiRzkwTENCaFpYTW9lQ0E5SUZObGNuVnRRM0psWVhScGJtbHVaU3dnZVNBOUlFZEdVaWtwSUN0Y2JpQWdJQ0JuWlc5dFgzQnZhVzUwS0dGbGN5aGpiMnh2Y2lBOUlFRm5aU3dnYzJsNlpTQTlJRUpOU1N3Z2MyaGhjR1VnUFNCRWFXRm5ibTl6YVhNcExDQmhiSEJvWVNBOUlEQXVOaWtnSzF4dUlDQWdJSE5qWVd4bFgyTnZiRzl5WDNacGNtbGthWE1vYjNCMGFXOXVJRDBnWENKd2JHRnpiV0ZjSWlrZ0sxeHVJQ0FnSUhOallXeGxYM05wZW1WZlkyOXVkR2x1ZFc5MWN5aHlZVzVuWlNBOUlHTW9NU3dnTmlrcElDdGNiaUFnSUNCblpXOXRYM050YjI5MGFDaGhaWE1vYkdsdVpYUjVjR1VnUFNCRWFXRm5ibTl6YVhNcExDQnRaWFJvYjJRZ1BTQmNJbXh2WlhOelhDSXNJSE5sSUQwZ1ZGSlZSU3dnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5c2IzSWdQU0JjSW1Kc1lXTnJYQ0lzSUhOcGVtVWdQU0F3TGpncElDdGNiaUFnSUNCc1lXSnpLSFJwZEd4bElEMGdYQ0pIUmxJZ2RuTWdRM0psWVhScGJtbHVZU0FvUldSaFpDQmxiaUJqYjJ4dmNpd2dRazFKSUdWdUlIUmhiV0hEc1c4cFhDSXNYRzRnSUNBZ0lDQWdJQ0I0SUQwZ1hDSkRjbVZoZEdsdWFXNWhJRlBEcVhKcFkyRWdLRzFuTDJSTUtWd2lMRnh1SUNBZ0lDQWdJQ0FnZVNBOUlGd2lSMFpTSUNodFRDOXRhVzR2TVM0M00yM0NzaWxjSWl4Y2JpQWdJQ0FnSUNBZ0lHTmhjSFJwYjI0Z1BTQmNJa3hoY3lCc3c2MXVaV0Z6SUcxMVpYTjBjbUZ1SUhSbGJtUmxibU5wWVhNZ2NHOXlJR2R5ZFhCdklHUmxJR1JwWVdkdXc3TnpkR2xqYjF3aUtTQXJYRzRnSUNBZ2RHaGxiV1VvY0d4dmRDNTBhWFJzWlNBOUlHVnNaVzFsYm5SZmRHVjRkQ2hvYW5WemRDQTlJREF1TlN3Z1ptRmpaU0E5SUZ3aVltOXNaRndpS1N4Y2JpQWdJQ0FnSUNBZ0lDQnNaV2RsYm1RdWNHOXphWFJwYjI0Z1BTQmNJbkpwWjJoMFhDSXBYRzU5WEc1Z1lHQWlmUT09IC0tPlxuXG5gYGByXG5wbG90X2dmcl8zZCA8LSBmdW5jdGlvbihkYXRhKSB7XG4gIGRhdGFfcGxvdCA8LSBkYXRhICU+JVxuICAgIG11dGF0ZShEaWFnbm9zaXMgPSBmYWN0b3IoRGlhZ25vc2lzLCBsYWJlbHMgPSBjKFxcTm8gQ0tEXFwsIFxcQ0tEXFwpKSlcbiAgXG4gIGdncGxvdChkYXRhX3Bsb3QsIGFlcyh4ID0gU2VydW1DcmVhdGluaW5lLCB5ID0gR0ZSKSkgK1xuICAgIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gQWdlLCBzaXplID0gQk1JLCBzaGFwZSA9IERpYWdub3NpcyksIGFscGhhID0gMC42KSArXG4gICAgc2NhbGVfY29sb3JfdmlyaWRpcyhvcHRpb24gPSBcXHBsYXNtYVxcKSArXG4gICAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygxLCA2KSkgK1xuICAgIGdlb21fc21vb3RoKGFlcyhsaW5ldHlwZSA9IERpYWdub3NpcyksIG1ldGhvZCA9IFxcbG9lc3NcXCwgc2UgPSBUUlVFLCBcbiAgICAgICAgICAgICAgICBjb2xvciA9IFxcYmxhY2tcXCwgc2l6ZSA9IDAuOCkgK1xuICAgIGxhYnModGl0bGUgPSBcXEdGUiB2cyBDcmVhdGluaW5hIChFZGFkIGVuIGNvbG9yXG4ifQ== -->
plot_gfr_3d <- function(data) {
data_plot <- data %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggplot(data_plot, aes(x = SerumCreatinine, y = GFR)) +
geom_point(aes(color = Age, size = BMI, shape = Diagnosis), alpha = 0.6) +
scale_color_viridis(option = \plasma\) +
scale_size_continuous(range = c(1, 6)) +
geom_smooth(aes(linetype = Diagnosis), method = \loess\, se = TRUE,
color = \black\, size = 0.8) +
labs(title = \GFR vs Creatinina (Edad en color
```r
plot_gfr_3d <- function(data) {
data_plot <- data %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggplot(data_plot, aes(x = SerumCreatinine, y = GFR)) +
geom_point(aes(color = Age, size = BMI, shape = Diagnosis), alpha = 0.6) +
scale_color_viridis(option = \plasma\) +
scale_size_continuous(range = c(1, 6)) +
geom_smooth(aes(linetype = Diagnosis), method = \loess\, se = TRUE,
color = \black\, size = 0.8) +
labs(title = \GFR vs Creatinina (Edad en color
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdF9jbGluaWNhbF9oZWF0bWFwIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgIyBDcmVhciBlc3RhZGlvcyBkZSBDS0QgYmFzYWRvcyBlbiBHRlJcbiAgZGF0YV9zdGFnZWQgPC0gZGF0YSAlPiVcbiAgICBtdXRhdGUoQ0tEX1N0YWdlID0gY2FzZV93aGVuKFxuICAgICAgR0ZSID49IDkwIH4gXCJOb3JtYWwgKOKJpTkwKVwiLFxuICAgICAgR0ZSID49IDYwIH4gXCJNaWxkICg2MC04OSlcIixcbiAgICAgIEdGUiA+PSAzMCB+IFwiTW9kZXJhdGUgKDMwLTU5KVwiLFxuICAgICAgR0ZSID49IDE1IH4gXCJTZXZlcmUgKDE1LTI5KVwiLFxuICAgICAgVFJVRSB+IFwiS2lkbmV5IEZhaWx1cmUgKDwxNSlcIlxuICAgICkpICU+JVxuICAgIG11dGF0ZShDS0RfU3RhZ2UgPSBmYWN0b3IoQ0tEX1N0YWdlLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoXCJOb3JtYWwgKOKJpTkwKVwiLCBcIk1pbGQgKDYwLTg5KVwiLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJNb2RlcmF0ZSAoMzAtNTkpXCIsIFwiU2V2ZXJlICgxNS0yOSlcIiwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiS2lkbmV5IEZhaWx1cmUgKDwxNSlcIikpKVxuICBcbiAgIyBDYWxjdWxhciBwcm9tZWRpb3MgcG9yIGVzdGFkaW9cbiAgaGVhdG1hcF9kYXRhIDwtIGRhdGFfc3RhZ2VkICU+JVxuICAgIGdyb3VwX2J5KENLRF9TdGFnZSkgJT4lXG4gICAgc3VtbWFyaXNlKFxuICAgICAgQk1JID0gbWVhbihCTUksIG5hLnJtID0gVFJVRSksXG4gICAgICBTeXN0b2xpY0JQID0gbWVhbihTeXN0b2xpY0JQLCBuYS5ybSA9IFRSVUUpLFxuICAgICAgSGJBMWMgPSBtZWFuKEhiQTFjLCBuYS5ybSA9IFRSVUUpLFxuICAgICAgQ3JlYXRpbmluZSA9IG1lYW4oU2VydW1DcmVhdGluaW5lLCBuYS5ybSA9IFRSVUUpLFxuICAgICAgSGVtb2dsb2JpbiA9IG1lYW4oSGVtb2dsb2JpbkxldmVscywgbmEucm0gPSBUUlVFKSxcbiAgICAgIFByb3RlaW5VcmluZSA9IG1lYW4oUHJvdGVpbkluVXJpbmUsIG5hLnJtID0gVFJVRSksXG4gICAgICBGYXRpZ3VlID0gbWVhbihGYXRpZ3VlTGV2ZWxzLCBuYS5ybSA9IFRSVUUpLFxuICAgICAgUW9MID0gbWVhbihRdWFsaXR5T2ZMaWZlU2NvcmUsIG5hLnJtID0gVFJVRSlcbiAgICApICU+JVxuICAgIHBpdm90X2xvbmdlcigtQ0tEX1N0YWdlLCBuYW1lc190byA9IFwiVmFyaWFibGVcIiwgdmFsdWVzX3RvID0gXCJWYWx1ZVwiKSAlPiVcbiAgICBncm91cF9ieShWYXJpYWJsZSkgJT4lXG4gICAgbXV0YXRlKFZhbHVlX3NjYWxlZCA9IHNjYWxlKFZhbHVlKVssMV0pICAjIEVzdGFuZGFyaXphciBwb3IgdmFyaWFibGVcbiAgXG4gIGdncGxvdChoZWF0bWFwX2RhdGEsIGFlcyh4ID0gQ0tEX1N0YWdlLCB5ID0gVmFyaWFibGUsIGZpbGwgPSBWYWx1ZV9zY2FsZWQpKSArXG4gICAgZ2VvbV90aWxlKGNvbG9yID0gXCJ3aGl0ZVwiLCBzaXplID0gMC41KSArXG4gICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKFZhbHVlLCAxKSksIHNpemUgPSAzLCBjb2xvciA9IFwid2hpdGVcIikgK1xuICAgIHNjYWxlX2ZpbGxfZ3JhZGllbnQyKGxvdyA9IFwiIzNCOUFCMlwiLCBtaWQgPSBcIiNFQkNDMkFcIiwgaGlnaCA9IFwiI0YyMUEwMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1pZHBvaW50ID0gMCwgbmFtZSA9IFwiWi1zY29yZVwiKSArXG4gICAgbGFicyh0aXRsZSA9IFwiUGVyZmlsIENsw61uaWNvIFByb21lZGlvIHBvciBFc3RhZGlvIGRlIENLRFwiLFxuICAgICAgICAgeCA9IFwiRXN0YWRpbyBkZSBFbmZlcm1lZGFkIFJlbmFsXCIsXG4gICAgICAgICB5ID0gXCJWYXJpYWJsZSBDbMOtbmljYVwiLFxuICAgICAgICAgY2FwdGlvbiA9IFwiVmFsb3JlcyBlc3RhbmRhcml6YWRvcyAoWi1zY29yZXMpIC0gbsO6bWVyb3MgPSB2YWxvciByZWFsIHByb21lZGlvXCIpICtcbiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpLFxuICAgICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSBcImJvbGRcIikpXG59XG5gYGAifQ== -->
```r
plot_clinical_heatmap <- function(data) {
# Crear estadios de CKD basados en GFR
data_staged <- data %>%
mutate(CKD_Stage = case_when(
GFR >= 90 ~ \Normal (≥90)\,
GFR >= 60 ~ \Mild (60-89)\,
GFR >= 30 ~ \Moderate (30-59)\,
GFR >= 15 ~ \Severe (15-29)\,
TRUE ~ \Kidney Failure (<15)\
)) %>%
mutate(CKD_Stage = factor(CKD_Stage,
levels = c(\Normal (≥90)\, \Mild (60-89)\,
\Moderate (30-59)\, \Severe (15-29)\,
\Kidney Failure (<15)\)))
# Calcular promedios por estadio
heatmap_data <- data_staged %>%
group_by(CKD_Stage) %>%
summarise(
BMI = mean(BMI, na.rm = TRUE),
SystolicBP = mean(SystolicBP, na.rm = TRUE),
HbA1c = mean(HbA1c, na.rm = TRUE),
Creatinine = mean(SerumCreatinine, na.rm = TRUE),
Hemoglobin = mean(HemoglobinLevels, na.rm = TRUE),
ProteinUrine = mean(ProteinInUrine, na.rm = TRUE),
Fatigue = mean(FatigueLevels, na.rm = TRUE),
QoL = mean(QualityOfLifeScore, na.rm = TRUE)
) %>%
pivot_longer(-CKD_Stage, names_to = \Variable\, values_to = \Value\) %>%
group_by(Variable) %>%
mutate(Value_scaled = scale(Value)[,1]) # Estandarizar por variable
ggplot(heatmap_data, aes(x = CKD_Stage, y = Variable, fill = Value_scaled)) +
geom_tile(color = \white\, size = 0.5) +
geom_text(aes(label = round(Value, 1)), size = 3, color = \white\) +
scale_fill_gradient2(low = \#3B9AB2\, mid = \#EBCC2A\, high = \#F21A00\,
midpoint = 0, name = \Z-score\) +
labs(title = \Perfil ClÃnico Promedio por Estadio de CKD\,
x = \Estadio de Enfermedad Renal\,
y = \Variable ClÃnica\,
caption = \Valores estandarizados (Z-scores) - números = valor real promedio\) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = \bold\))
}
```
<!-- rnb-source-end -->
```r
plot_clinical_heatmap <- function(data) {
# Crear estadios de CKD basados en GFR
data_staged <- data %>%
mutate(CKD_Stage = case_when(
GFR >= 90 ~ \Normal (≥90)\,
GFR >= 60 ~ \Mild (60-89)\,
GFR >= 30 ~ \Moderate (30-59)\,
GFR >= 15 ~ \Severe (15-29)\,
TRUE ~ \Kidney Failure (<15)\
)) %>%
mutate(CKD_Stage = factor(CKD_Stage,
levels = c(\Normal (≥90)\, \Mild (60-89)\,
\Moderate (30-59)\, \Severe (15-29)\,
\Kidney Failure (<15)\)))
# Calcular promedios por estadio
heatmap_data <- data_staged %>%
group_by(CKD_Stage) %>%
summarise(
BMI = mean(BMI, na.rm = TRUE),
SystolicBP = mean(SystolicBP, na.rm = TRUE),
HbA1c = mean(HbA1c, na.rm = TRUE),
Creatinine = mean(SerumCreatinine, na.rm = TRUE),
Hemoglobin = mean(HemoglobinLevels, na.rm = TRUE),
ProteinUrine = mean(ProteinInUrine, na.rm = TRUE),
Fatigue = mean(FatigueLevels, na.rm = TRUE),
QoL = mean(QualityOfLifeScore, na.rm = TRUE)
) %>%
pivot_longer(-CKD_Stage, names_to = \Variable\, values_to = \Value\) %>%
group_by(Variable) %>%
mutate(Value_scaled = scale(Value)[,1]) # Estandarizar por variable
ggplot(heatmap_data, aes(x = CKD_Stage, y = Variable, fill = Value_scaled)) +
geom_tile(color = \white\, size = 0.5) +
geom_text(aes(label = round(Value, 1)), size = 3, color = \white\) +
scale_fill_gradient2(low = \#3B9AB2\, mid = \#EBCC2A\, high = \#F21A00\,
midpoint = 0, name = \Z-score\) +
labs(title = \Perfil ClÃnico Promedio por Estadio de CKD\,
x = \Estadio de Enfermedad Renal\,
y = \Variable ClÃnica\,
caption = \Valores estandarizados (Z-scores) - números = valor real promedio\) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = \bold\))
}
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjR3h2ZEY5d1lYSmhiR3hsYkY5amIyOXlaR2x1WVhSbGN5QThMU0JtZFc1amRHbHZiaWhrWVhSaEtTQjdYRzRnSUhCaGNtRnNiR1ZzWDJSaGRHRWdQQzBnWkdGMFlTQWxQaVZjYmlBZ0lDQnpaV3hsWTNRb1VHRjBhV1Z1ZEVsRUxDQkNUVWtzSUZCb2VYTnBZMkZzUVdOMGFYWnBkSGtzSUVScFpYUlJkV0ZzYVhSNUxDQlRiR1ZsY0ZGMVlXeHBkSGtzWEc0Z0lDQWdJQ0FnSUNBZ0lFRnNZMjlvYjJ4RGIyNXpkVzF3ZEdsdmJpd2dVMjF2YTJsdVp5d2dSR2xoWjI1dmMybHpLU0FsUGlWY2JpQWdJQ0J0ZFhSaGRHVW9SR2xoWjI1dmMybHpJRDBnWm1GamRHOXlLRVJwWVdkdWIzTnBjeXdnYkdGaVpXeHpJRDBnWXloY0lrNXZJRU5MUkZ3aUxDQmNJa05MUkZ3aUtTa3BJQ1UrSlZ4dUlDQWdJQ01nUlhOMFlXNWtZWEpwZW1GeUlIWmhjbWxoWW14bGN5QndZWEpoSUdWelkyRnNZU0JqYjIzRHVtNWNiaUFnSUNCdGRYUmhkR1VvWVdOeWIzTnpLR01vUWsxSkxDQlFhSGx6YVdOaGJFRmpkR2wyYVhSNUxDQkVhV1YwVVhWaGJHbDBlU3dnVTJ4bFpYQlJkV0ZzYVhSNUxDQmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUVd4amIyaHZiRU52Ym5OMWJYQjBhVzl1S1N3Z2MyTmhiR1VwS1NBbFBpVmNiaUFnSUNCellXMXdiR1ZmYmlneU1EQXBJQ0FqSUUxMVpYTjBjbUVnY0dGeVlTQmpiR0Z5YVdSaFpDQjJhWE4xWVd4Y2JpQWdYRzRnSUhCaGNtRnNiR1ZzWDJ4dmJtY2dQQzBnY0dGeVlXeHNaV3hmWkdGMFlTQWxQaVZjYmlBZ0lDQndhWFp2ZEY5c2IyNW5aWElvWTI5c2N5QTlJR01vUWsxSkxDQlFhSGx6YVdOaGJFRmpkR2wyYVhSNUxDQkVhV1YwVVhWaGJHbDBlU3dnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUZOc1pXVndVWFZoYkdsMGVTd2dRV3hqYjJodmJFTnZibk4xYlhCMGFXOXVLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYm1GdFpYTmZkRzhnUFNCY0lsWmhjbWxoWW14bFhDSXNJSFpoYkhWbGMxOTBieUE5SUZ3aVZtRnNkV1ZjSWlrZ0pUNGxYRzRnSUNBZ2JYVjBZWFJsS0ZaaGNtbGhZbXhsSUQwZ1ptRmpkRzl5S0ZaaGNtbGhZbXhsTENCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiR1YyWld4eklEMGdZeWhjSWtKTlNWd2lMQ0JjSWxCb2VYTnBZMkZzUVdOMGFYWnBkSGxjSWl3Z1hDSkVhV1YwVVhWaGJHbDBlVndpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRndpVTJ4bFpYQlJkV0ZzYVhSNVhDSXNJRndpUVd4amIyaHZiRU52Ym5OMWJYQjBhVzl1WENJcEtTbGNiaUFnWEc0Z0lHZG5jR3h2ZENod1lYSmhiR3hsYkY5c2IyNW5MQ0JoWlhNb2VDQTlJRlpoY21saFlteGxMQ0I1SUQwZ1ZtRnNkV1VzSUdkeWIzVndJRDBnVUdGMGFXVnVkRWxFS1NrZ0sxeHVJQ0FnSUdkbGIyMWZiR2x1WlNoaFpYTW9ZMjlzYjNJZ1BTQkVhV0ZuYm05emFYTXBMQ0JoYkhCb1lTQTlJREF1TXl3Z2MybDZaU0E5SURBdU5Ta2dLMXh1SUNBZ0lHZGxiMjFmY0c5cGJuUW9ZV1Z6S0dOdmJHOXlJRDBnUkdsaFoyNXZjMmx6S1N3Z1lXeHdhR0VnUFNBd0xqUXNJSE5wZW1VZ1BTQXhLU0FyWEc0Z0lDQWdjMk5oYkdWZlkyOXNiM0pmYldGdWRXRnNLSFpoYkhWbGN5QTlJR01vWENKT2J5QkRTMFJjSWlBOUlGd2lJekF3UWtFek9Gd2lMQ0JjSWtOTFJGd2lJRDBnWENJalJqZzNOalpFWENJcEtTQXJYRzRnSUNBZ2JHRmljeWgwYVhSc1pTQTlJRndpVUdWeVptbHNaWE1nWkdVZ1JYTjBhV3h2SUdSbElGWnBaR0VnS0ZCaGNtRnNiR1ZzSUVOdmIzSmthVzVoZEdWektWd2lMRnh1SUNBZ0lDQWdJQ0FnYzNWaWRHbDBiR1VnUFNCY0lrMTFaWE4wY21FZ1pHVWdNakF3SUhCaFkybGxiblJsY3lBdElGWmhjbWxoWW14bGN5QmxjM1JoYm1SaGNtbDZZV1JoYzF3aUxGeHVJQ0FnSUNBZ0lDQWdlU0E5SUZ3aVZtRnNiM0lnUlhOMFlXNWtZWEpwZW1Ga2J5QW9XaTF6WTI5eVpTbGNJaXhjYmlBZ0lDQWdJQ0FnSUhnZ1BTQmNJbHdpS1NBclhHNGdJQ0FnZEdobGJXVW9ZWGhwY3k1MFpYaDBMbmdnUFNCbGJHVnRaVzUwWDNSbGVIUW9ZVzVuYkdVZ1BTQTBOU3dnYUdwMWMzUWdQU0F4S1N4Y2JpQWdJQ0FnSUNBZ0lDQndiRzkwTG5ScGRHeGxJRDBnWld4bGJXVnVkRjkwWlhoMEtHaHFkWE4wSUQwZ01DNDFMQ0JtWVdObElEMGdYQ0ppYjJ4a1hDSXBMRnh1SUNBZ0lDQWdJQ0FnSUhCc2IzUXVjM1ZpZEdsMGJHVWdQU0JsYkdWdFpXNTBYM1JsZUhRb2FHcDFjM1FnUFNBd0xqVXBLVnh1ZlZ4dVlHQmdJbjA9IC0tPlxuXG5gYGByXG5wbG90X3BhcmFsbGVsX2Nvb3JkaW5hdGVzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgcGFyYWxsZWxfZGF0YSA8LSBkYXRhICU+JVxuICAgIHNlbGVjdChQYXRpZW50SUQsIEJNSSwgUGh5c2ljYWxBY3Rpdml0eSwgRGlldFF1YWxpdHksIFNsZWVwUXVhbGl0eSxcbiAgICAgICAgICAgQWxjb2hvbENvbnN1bXB0aW9uLCBTbW9raW5nLCBEaWFnbm9zaXMpICU+JVxuICAgIG11dGF0ZShEaWFnbm9zaXMgPSBmYWN0b3IoRGlhZ25vc2lzLCBsYWJlbHMgPSBjKFxcTm8gQ0tEXFwsIFxcQ0tEXFwpKSkgJT4lXG4gICAgIyBFc3RhbmRhcml6YXIgdmFyaWFibGVzIHBhcmEgZXNjYWxhIGNvbcO6blxuICAgIG11dGF0ZShhY3Jvc3MoYyhCTUksIFBoeXNpY2FsQWN0aXZpdHksIERpZXRRdWFsaXR5LCBTbGVlcFF1YWxpdHksIFxuICAgICAgICAgICAgICAgICAgICBBbGNvaG9sQ29uc3VtcHRpb24pLCBzY2FsZSkpICU+JVxuICAgIHNhbXBsZV9uKDIwMCkgICMgTXVlc3RyYSBwYXJhIGNsYXJpZGFkIHZpc3VhbFxuICBcbiAgcGFyYWxsZWxfbG9uZyA8LSBwYXJhbGxlbF9kYXRhICU+JVxuICAgIHBpdm90X2xvbmdlcihjb2xzID0gYyhCTUksIFBoeXNpY2FsQWN0aXZpdHksIERpZXRRdWFsaXR5LCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2xlZXBRdWFsaXR5LCBBbGNvaG9sQ29uc3VtcHRpb24pLFxuICAgICAgICAgICAgICAgICBuYW1lc190byA9IFxcVmFyaWFibGVcXCwgdmFsdWVzX3RvID0gXFxWYWx1ZVxcKSAlPiVcbiAgICBtdXRhdGUoVmFyaWFibGUgPSBmYWN0b3IoVmFyaWFibGUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKFxcQk1JXFwsIFxcUGh5c2ljYWxBY3Rpdml0eVxcLCBcXERpZXRRdWFsaXR5XFwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxTbGVlcFF1YWxpdHlcXCwgXFxBbGNvaG9sQ29uc3VtcHRpb25cXCkpKVxuICBcbiAgZ2dwbG90KHBhcmFsbGVsX2xvbmcsIGFlcyh4ID0gVmFyaWFibGUsIHkgPSBWYWx1ZSwgZ3JvdXAgPSBQYXRpZW50SUQpKSArXG4gICAgZ2VvbV9saW5lKGFlcyhjb2xvciA9IERpYWdub3NpcyksIGFscGhhID0gMC4zLCBzaXplID0gMC41KSArXG4gICAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBEaWFnbm9zaXMpLCBhbHBoYSA9IDAuNCwgc2l6ZSA9IDEpICtcbiAgICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYyhcXE5vIENLRFxcID0gXFwjMDBCQTM4XFwsIFxcQ0tEXFwgPSBcXCNGODc2NkRcXCkpICtcbiAgICBsYWJzKHRpdGxlID0gXFxQZXJmaWxlcyBkZSBFc3RpbG8gZGUgVmlkYSAoUGFyYWxsZWwgQ29vcmRpbmF0ZXMpXFwsXG4gICAgICAgICBzdWJ0aXRsZSA9IFxcTXVlc3RyYSBkZSAyMDAgcGFjaWVudGVzIC0gVmFyaWFibGVzIGVzdGFuZGFyaXphZGFzXFwsXG4gICAgICAgICB5ID0gXFxWYWxvciBFc3RhbmRhcml6YWRvIChaLXNjb3JlKVxcLFxuICAgICAgICAgeCA9IFxcXFwpICtcbiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpLFxuICAgICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSBcXGJvbGRcXCksXG4gICAgICAgICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpXG59XG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
plot_parallel_coordinates <- function(data) {
parallel_data <- data %>%
select(PatientID, BMI, PhysicalActivity, DietQuality, SleepQuality,
AlcoholConsumption, Smoking, Diagnosis) %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\))) %>%
# Estandarizar variables para escala común
mutate(across(c(BMI, PhysicalActivity, DietQuality, SleepQuality,
AlcoholConsumption), scale)) %>%
sample_n(200) # Muestra para claridad visual
parallel_long <- parallel_data %>%
pivot_longer(cols = c(BMI, PhysicalActivity, DietQuality,
SleepQuality, AlcoholConsumption),
names_to = \Variable\, values_to = \Value\) %>%
mutate(Variable = factor(Variable,
levels = c(\BMI\, \PhysicalActivity\, \DietQuality\,
\SleepQuality\, \AlcoholConsumption\)))
ggplot(parallel_long, aes(x = Variable, y = Value, group = PatientID)) +
geom_line(aes(color = Diagnosis), alpha = 0.3, size = 0.5) +
geom_point(aes(color = Diagnosis), alpha = 0.4, size = 1) +
scale_color_manual(values = c(\No CKD\ = \#00BA38\, \CKD\ = \#F8766D\)) +
labs(title = \Perfiles de Estilo de Vida (Parallel Coordinates)\,
subtitle = \Muestra de 200 pacientes - Variables estandarizadas\,
y = \Valor Estandarizado (Z-score)\,
x = \\) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = \bold\),
plot.subtitle = element_text(hjust = 0.5))
}
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVZR0JnY2x4dWNHeHZkRjl3WVhKaGJHeGxiRjlqYjI5eVpHbHVZWFJsY3lBOExTQm1kVzVqZEdsdmJpaGtZWFJoS1NCN1hHNGdJSEJoY21Gc2JHVnNYMlJoZEdFZ1BDMGdaR0YwWVNBbFBpVmNiaUFnSUNCelpXeGxZM1FvVUdGMGFXVnVkRWxFTENCQ1RVa3NJRkJvZVhOcFkyRnNRV04wYVhacGRIa3NJRVJwWlhSUmRXRnNhWFI1TENCVGJHVmxjRkYxWVd4cGRIa3NYRzRnSUNBZ0lDQWdJQ0FnSUVGc1kyOW9iMnhEYjI1emRXMXdkR2x2Yml3Z1UyMXZhMmx1Wnl3Z1JHbGhaMjV2YzJsektTQWxQaVZjYmlBZ0lDQnRkWFJoZEdVb1JHbGhaMjV2YzJseklEMGdabUZqZEc5eUtFUnBZV2R1YjNOcGN5d2diR0ZpWld4eklEMGdZeWhjWEU1dklFTkxSRnhjTENCY1hFTkxSRnhjS1NrcElDVStKVnh1SUNBZ0lDTWdSWE4wWVc1a1lYSnBlbUZ5SUhaaGNtbGhZbXhsY3lCd1lYSmhJR1Z6WTJGc1lTQmpiMjNEdW01Y2JpQWdJQ0J0ZFhSaGRHVW9ZV055YjNOektHTW9RazFKTENCUWFIbHphV05oYkVGamRHbDJhWFI1TENCRWFXVjBVWFZoYkdsMGVTd2dVMnhsWlhCUmRXRnNhWFI1TENCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdRV3hqYjJodmJFTnZibk4xYlhCMGFXOXVLU3dnYzJOaGJHVXBLU0FsUGlWY2JpQWdJQ0J6WVcxd2JHVmZiaWd5TURBcElDQWpJRTExWlhOMGNtRWdjR0Z5WVNCamJHRnlhV1JoWkNCMmFYTjFZV3hjYmlBZ1hHNGdJSEJoY21Gc2JHVnNYMnh2Ym1jZ1BDMGdjR0Z5WVd4c1pXeGZaR0YwWVNBbFBpVmNiaUFnSUNCd2FYWnZkRjlzYjI1blpYSW9ZMjlzY3lBOUlHTW9RazFKTENCUWFIbHphV05oYkVGamRHbDJhWFI1TENCRWFXVjBVWFZoYkdsMGVTd2dYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRk5zWldWd1VYVmhiR2wwZVN3Z1FXeGpiMmh2YkVOdmJuTjFiWEIwYVc5dUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdibUZ0WlhOZmRHOGdQU0JjWEZaaGNtbGhZbXhsWEZ3c0lIWmhiSFZsYzE5MGJ5QTlJRnhjVm1Gc2RXVmNYQ2tnSlQ0bFhHNGdJQ0FnYlhWMFlYUmxLRlpoY21saFlteGxJRDBnWm1GamRHOXlLRlpoY21saFlteGxMQ0JjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHVjJaV3h6SUQwZ1l5aGNYRUpOU1Z4Y0xDQmNYRkJvZVhOcFkyRnNRV04wYVhacGRIbGNYQ3dnWEZ4RWFXVjBVWFZoYkdsMGVWeGNMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lGeGNVMnhsWlhCUmRXRnNhWFI1WEZ3c0lGeGNRV3hqYjJodmJFTnZibk4xYlhCMGFXOXVYRndwS1NsY2JpQWdYRzRnSUdkbmNHeHZkQ2h3WVhKaGJHeGxiRjlzYjI1bkxDQmhaWE1vZUNBOUlGWmhjbWxoWW14bExDQjVJRDBnVm1Gc2RXVXNJR2R5YjNWd0lEMGdVR0YwYVdWdWRFbEVLU2tnSzF4dUlDQWdJR2RsYjIxZmJHbHVaU2hoWlhNb1kyOXNiM0lnUFNCRWFXRm5ibTl6YVhNcExDQmhiSEJvWVNBOUlEQXVNeXdnYzJsNlpTQTlJREF1TlNrZ0sxeHVJQ0FnSUdkbGIyMWZjRzlwYm5Rb1lXVnpLR052Ykc5eUlEMGdSR2xoWjI1dmMybHpLU3dnWVd4d2FHRWdQU0F3TGpRc0lITnBlbVVnUFNBeEtTQXJYRzRnSUNBZ2MyTmhiR1ZmWTI5c2IzSmZiV0Z1ZFdGc0tIWmhiSFZsY3lBOUlHTW9YRnhPYnlCRFMwUmNYQ0E5SUZ4Y0l6QXdRa0V6T0Z4Y0xDQmNYRU5MUkZ4Y0lEMGdYRndqUmpnM05qWkVYRndwS1NBclhHNGdJQ0FnYkdGaWN5aDBhWFJzWlNBOUlGeGNVR1Z5Wm1sc1pYTWdaR1VnUlhOMGFXeHZJR1JsSUZacFpHRWdLRkJoY21Gc2JHVnNJRU52YjNKa2FXNWhkR1Z6S1Z4Y0xGeHVJQ0FnSUNBZ0lDQWdjM1ZpZEdsMGJHVWdQU0JjWEUxMVpYTjBjbUVnWkdVZ01qQXdJSEJoWTJsbGJuUmxjeUF0SUZaaGNtbGhZbXhsY3lCbGMzUmhibVJoY21sNllXUmhjMXhjTEZ4dUlDQWdJQ0FnSUNBZ2VTQTlJRnhjVm1Gc2IzSWdSWE4wWVc1a1lYSnBlbUZrYnlBb1dpMXpZMjl5WlNsY1hDeGNiaUFnSUNBZ0lDQWdJSGdnUFNCY1hGeGNLU0FyWEc0Z0lDQWdkR2hsYldVb1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBME5Td2dhR3AxYzNRZ1BTQXhLU3hjYmlBZ0lDQWdJQ0FnSUNCd2JHOTBMblJwZEd4bElEMGdaV3hsYldWdWRGOTBaWGgwS0docWRYTjBJRDBnTUM0MUxDQm1ZV05sSUQwZ1hGeGliMnhrWEZ3cExGeHVJQ0FnSUNBZ0lDQWdJSEJzYjNRdWMzVmlkR2wwYkdVZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvYUdwMWMzUWdQU0F3TGpVcEtWeHVmVnh1WUdCZ1hHNWdZR0FpZlE9PSAtLT5cblxuYGBgclxuYGBgclxucGxvdF9wYXJhbGxlbF9jb29yZGluYXRlcyA8LSBmdW5jdGlvbihkYXRhKSB7XG4gIHBhcmFsbGVsX2RhdGEgPC0gZGF0YSAlPiVcbiAgICBzZWxlY3QoUGF0aWVudElELCBCTUksIFBoeXNpY2FsQWN0aXZpdHksIERpZXRRdWFsaXR5LCBTbGVlcFF1YWxpdHksXG4gICAgICAgICAgIEFsY29ob2xDb25zdW1wdGlvbiwgU21va2luZywgRGlhZ25vc2lzKSAlPiVcbiAgICBtdXRhdGUoRGlhZ25vc2lzID0gZmFjdG9yKERpYWdub3NpcywgbGFiZWxzID0gYyhcXE5vIENLRFxcLCBcXENLRFxcKSkpICU+JVxuICAgICMgRXN0YW5kYXJpemFyIHZhcmlhYmxlcyBwYXJhIGVzY2FsYSBjb23Dum5cbiAgICBtdXRhdGUoYWNyb3NzKGMoQk1JLCBQaHlzaWNhbEFjdGl2aXR5LCBEaWV0UXVhbGl0eSwgU2xlZXBRdWFsaXR5LCBcbiAgICAgICAgICAgICAgICAgICAgQWxjb2hvbENvbnN1bXB0aW9uKSwgc2NhbGUpKSAlPiVcbiAgICBzYW1wbGVfbigyMDApICAjIE11ZXN0cmEgcGFyYSBjbGFyaWRhZCB2aXN1YWxcbiAgXG4gIHBhcmFsbGVsX2xvbmcgPC0gcGFyYWxsZWxfZGF0YSAlPiVcbiAgICBwaXZvdF9sb25nZXIoY29scyA9IGMoQk1JLCBQaHlzaWNhbEFjdGl2aXR5LCBEaWV0UXVhbGl0eSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwUXVhbGl0eSwgQWxjb2hvbENvbnN1bXB0aW9uKSxcbiAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSBcXFZhcmlhYmxlXFwsIHZhbHVlc190byA9IFxcVmFsdWVcXCkgJT4lXG4gICAgbXV0YXRlKFZhcmlhYmxlID0gZmFjdG9yKFZhcmlhYmxlLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhcXEJNSVxcLCBcXFBoeXNpY2FsQWN0aXZpdHlcXCwgXFxEaWV0UXVhbGl0eVxcLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcU2xlZXBRdWFsaXR5XFwsIFxcQWxjb2hvbENvbnN1bXB0aW9uXFwpKSlcbiAgXG4gIGdncGxvdChwYXJhbGxlbF9sb25nLCBhZXMoeCA9IFZhcmlhYmxlLCB5ID0gVmFsdWUsIGdyb3VwID0gUGF0aWVudElEKSkgK1xuICAgIGdlb21fbGluZShhZXMoY29sb3IgPSBEaWFnbm9zaXMpLCBhbHBoYSA9IDAuMywgc2l6ZSA9IDAuNSkgK1xuICAgIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gRGlhZ25vc2lzKSwgYWxwaGEgPSAwLjQsIHNpemUgPSAxKSArXG4gICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoXFxObyBDS0RcXCA9IFxcIzAwQkEzOFxcLCBcXENLRFxcID0gXFwjRjg3NjZEXFwpKSArXG4gICAgbGFicyh0aXRsZSA9IFxcUGVyZmlsZXMgZGUgRXN0aWxvIGRlIFZpZGEgKFBhcmFsbGVsIENvb3JkaW5hdGVzKVxcLFxuICAgICAgICAgc3VidGl0bGUgPSBcXE11ZXN0cmEgZGUgMjAwIHBhY2llbnRlcyAtIFZhcmlhYmxlcyBlc3RhbmRhcml6YWRhc1xcLFxuICAgICAgICAgeSA9IFxcVmFsb3IgRXN0YW5kYXJpemFkbyAoWi1zY29yZSlcXCxcbiAgICAgICAgIHggPSBcXFxcKSArXG4gICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSxcbiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXFxib2xkXFwpLFxuICAgICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKVxufVxuYGBgXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxucGxvdF9wYXJhbGxlbF9jb29yZGluYXRlcyA8LSBmdW5jdGlvbihkYXRhKSB7XG4gIHBhcmFsbGVsX2RhdGEgPC0gZGF0YSAlPiVcbiAgICBzZWxlY3QoUGF0aWVudElELCBCTUksIFBoeXNpY2FsQWN0aXZpdHksIERpZXRRdWFsaXR5LCBTbGVlcFF1YWxpdHksXG4gICAgICAgICAgIEFsY29ob2xDb25zdW1wdGlvbiwgU21va2luZywgRGlhZ25vc2lzKSAlPiVcbiAgICBtdXRhdGUoRGlhZ25vc2lzID0gZmFjdG9yKERpYWdub3NpcywgbGFiZWxzID0gYyhcXE5vIENLRFxcLCBcXENLRFxcKSkpICU+JVxuICAgICMgRXN0YW5kYXJpemFyIHZhcmlhYmxlcyBwYXJhIGVzY2FsYSBjb23Dum5cbiAgICBtdXRhdGUoYWNyb3NzKGMoQk1JLCBQaHlzaWNhbEFjdGl2aXR5LCBEaWV0UXVhbGl0eSwgU2xlZXBRdWFsaXR5LCBcbiAgICAgICAgICAgICAgICAgICAgQWxjb2hvbENvbnN1bXB0aW9uKSwgc2NhbGUpKSAlPiVcbiAgICBzYW1wbGVfbigyMDApICAjIE11ZXN0cmEgcGFyYSBjbGFyaWRhZCB2aXN1YWxcbiAgXG4gIHBhcmFsbGVsX2xvbmcgPC0gcGFyYWxsZWxfZGF0YSAlPiVcbiAgICBwaXZvdF9sb25nZXIoY29scyA9IGMoQk1JLCBQaHlzaWNhbEFjdGl2aXR5LCBEaWV0UXVhbGl0eSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNsZWVwUXVhbGl0eSwgQWxjb2hvbENvbnN1bXB0aW9uKSxcbiAgICAgICAgICAgICAgICAgbmFtZXNfdG8gPSBcXFZhcmlhYmxlXFwsIHZhbHVlc190byA9IFxcVmFsdWVcXCkgJT4lXG4gICAgbXV0YXRlKFZhcmlhYmxlID0gZmFjdG9yKFZhcmlhYmxlLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhcXEJNSVxcLCBcXFBoeXNpY2FsQWN0aXZpdHlcXCwgXFxEaWV0UXVhbGl0eVxcLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcU2xlZXBRdWFsaXR5XFwsIFxcQWxjb2hvbENvbnN1bXB0aW9uXFwpKSlcbiAgXG4gIGdncGxvdChwYXJhbGxlbF9sb25nLCBhZXMoeCA9IFZhcmlhYmxlLCB5ID0gVmFsdWUsIGdyb3VwID0gUGF0aWVudElEKSkgK1xuICAgIGdlb21fbGluZShhZXMoY29sb3IgPSBEaWFnbm9zaXMpLCBhbHBoYSA9IDAuMywgc2l6ZSA9IDAuNSkgK1xuICAgIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gRGlhZ25vc2lzKSwgYWxwaGEgPSAwLjQsIHNpemUgPSAxKSArXG4gICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoXFxObyBDS0RcXCA9IFxcIzAwQkEzOFxcLCBcXENLRFxcID0gXFwjRjg3NjZEXFwpKSArXG4gICAgbGFicyh0aXRsZSA9IFxcUGVyZmlsZXMgZGUgRXN0aWxvIGRlIFZpZGEgKFBhcmFsbGVsIENvb3JkaW5hdGVzKVxcLFxuICAgICAgICAgc3VidGl0bGUgPSBcXE11ZXN0cmEgZGUgMjAwIHBhY2llbnRlcyAtIFZhcmlhYmxlcyBlc3RhbmRhcml6YWRhc1xcLFxuICAgICAgICAgeSA9IFxcVmFsb3IgRXN0YW5kYXJpemFkbyAoWi1zY29yZSlcXCxcbiAgICAgICAgIHggPSBcXFxcKSArXG4gICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSxcbiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXFxib2xkXFwpLFxuICAgICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKVxufVxuYGBgXG5gYGAifQ== -->
```r
```r
plot_parallel_coordinates <- function(data) {
parallel_data <- data %>%
select(PatientID, BMI, PhysicalActivity, DietQuality, SleepQuality,
AlcoholConsumption, Smoking, Diagnosis) %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\))) %>%
# Estandarizar variables para escala común
mutate(across(c(BMI, PhysicalActivity, DietQuality, SleepQuality,
AlcoholConsumption), scale)) %>%
sample_n(200) # Muestra para claridad visual
parallel_long <- parallel_data %>%
pivot_longer(cols = c(BMI, PhysicalActivity, DietQuality,
SleepQuality, AlcoholConsumption),
names_to = \Variable\, values_to = \Value\) %>%
mutate(Variable = factor(Variable,
levels = c(\BMI\, \PhysicalActivity\, \DietQuality\,
\SleepQuality\, \AlcoholConsumption\)))
ggplot(parallel_long, aes(x = Variable, y = Value, group = PatientID)) +
geom_line(aes(color = Diagnosis), alpha = 0.3, size = 0.5) +
geom_point(aes(color = Diagnosis), alpha = 0.4, size = 1) +
scale_color_manual(values = c(\No CKD\ = \#00BA38\, \CKD\ = \#F8766D\)) +
labs(title = \Perfiles de Estilo de Vida (Parallel Coordinates)\,
subtitle = \Muestra de 200 pacientes - Variables estandarizadas\,
y = \Valor Estandarizado (Z-score)\,
x = \\) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5, face = \bold\),
plot.subtitle = element_text(hjust = 0.5))
}
```
```
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjR3h2ZEY5a1pXMXZaM0poY0docFkxOWliM2h3Ykc5MGN5QThMU0JtZFc1amRHbHZiaWhrWVhSaEtTQjdYRzRnSUdSaGRHRmZaR1Z0YnlBOExTQmtZWFJoSUNVK0pWeHVJQ0FnSUcxMWRHRjBaU2hjYmlBZ0lDQWdJRWRsYm1SbGNpQTlJR1poWTNSdmNpaEhaVzVrWlhJc0lHeGhZbVZzY3lBOUlHTW9YQ0pOWVd4bFhDSXNJRndpUm1WdFlXeGxYQ0lwS1N4Y2JpQWdJQ0FnSUVWMGFHNXBZMmwwZVNBOUlHWmhZM1J2Y2loRmRHaHVhV05wZEhrc0lHeGhZbVZzY3lBOUlHTW9YQ0pEWVhWallYTnBZVzVjSWl3Z1hDSkJabkpwWTJGdUlFRnRaWEpwWTJGdVhDSXNJRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCY0lrRnphV0Z1WENJc0lGd2lUM1JvWlhKY0lpa3BMRnh1SUNBZ0lDQWdVMjlqYVc5bFkyOXViMjFwWTFOMFlYUjFjeUE5SUdaaFkzUnZjaWhUYjJOcGIyVmpiMjV2YldsalUzUmhkSFZ6TENCY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2JHRmlaV3h6SUQwZ1l5aGNJa3h2ZDF3aUxDQmNJazFwWkdSc1pWd2lMQ0JjSWtocFoyaGNJaWtwWEc0Z0lDQWdLU0FsUGlWY2JpQWdJQ0J6Wld4bFkzUW9SMlZ1WkdWeUxDQkZkR2h1YVdOcGRIa3NJRk52WTJsdlpXTnZibTl0YVdOVGRHRjBkWE1zSUVkR1Vpd2dTR0pCTVdNc0lGeHVJQ0FnSUNBZ0lDQWdJQ0JUZVhOMGIyeHBZMEpRTENCUmRXRnNhWFI1VDJaTWFXWmxVMk52Y21VcElDVStKVnh1SUNBZ0lIQnBkbTkwWDJ4dmJtZGxjaWhqYjJ4eklEMGdZeWhIUmxJc0lFaGlRVEZqTENCVGVYTjBiMnhwWTBKUUxDQlJkV0ZzYVhSNVQyWk1hV1psVTJOdmNtVXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1WVcxbGMxOTBieUE5SUZ3aVFtbHZiV0Z5YTJWeVhDSXNJSFpoYkhWbGMxOTBieUE5SUZ3aVZtRnNkV1ZjSWlsY2JpQWdYRzRnSUdkbmNHeHZkQ2hrWVhSaFgyUmxiVzhzSUdGbGN5aDRJRDBnVTI5amFXOWxZMjl1YjIxcFkxTjBZWFIxY3l3Z2VTQTlJRlpoYkhWbExDQm1hV3hzSUQwZ1IyVnVaR1Z5S1NrZ0sxeHVJQ0FnSUdkbGIyMWZZbTk0Y0d4dmRDaGhiSEJvWVNBOUlEQXVOeXdnYjNWMGJHbGxjaTV6YVhwbElEMGdNQzQxS1NBclhHNGdJQ0FnWm1GalpYUmZaM0pwWkNoQ2FXOXRZWEpyWlhJZ2ZpQkZkR2h1YVdOcGRIa3NJSE5qWVd4bGN5QTlJRndpWm5KbFpWOTVYQ0lwSUN0Y2JpQWdJQ0J6WTJGc1pWOW1hV3hzWDJKeVpYZGxjaWh3WVd4bGRIUmxJRDBnWENKVFpYUXlYQ0lwSUN0Y2JpQWdJQ0JzWVdKektIUnBkR3hsSUQwZ1hDSkNhVzl0WVhKallXUnZjbVZ6SUhCdmNpQkVaVzF2WjNKaFpzT3RZU0FvUjhPcGJtVnlieXdnUlhSdWFXTnBaR0ZrTENCRmMzUmhkSFZ6SUZOdlkybHZaV052YnNPemJXbGpieWxjSWl4Y2JpQWdJQ0FnSUNBZ0lIZ2dQU0JjSWtWemRHRjBkWE1nVTI5amFXOWxZMjl1dzdOdGFXTnZYQ0lzWEc0Z0lDQWdJQ0FnSUNCNUlEMGdYQ0pXWVd4dmNpQmtaV3dnUW1sdmJXRnlZMkZrYjNKY0lpa2dLMXh1SUNBZ0lIUm9aVzFsS0hOMGNtbHdMblJsZUhRZ1BTQmxiR1Z0Wlc1MFgzUmxlSFFvWm1GalpTQTlJRndpWW05c1pGd2lMQ0J6YVhwbElEMGdPQ2tzWEc0Z0lDQWdJQ0FnSUNBZ1lYaHBjeTUwWlhoMExuZ2dQU0JsYkdWdFpXNTBYM1JsZUhRb1lXNW5iR1VnUFNBME5Td2dhR3AxYzNRZ1BTQXhLU3hjYmlBZ0lDQWdJQ0FnSUNCd2JHOTBMblJwZEd4bElEMGdaV3hsYldWdWRGOTBaWGgwS0docWRYTjBJRDBnTUM0MUxDQm1ZV05sSUQwZ1hDSmliMnhrWENJc0lITnBlbVVnUFNBeE1Ta3BYRzU5WEc1Z1lHQWlmUT09IC0tPlxuXG5gYGByXG5wbG90X2RlbW9ncmFwaGljX2JveHBsb3RzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgZGF0YV9kZW1vIDwtIGRhdGEgJT4lXG4gICAgbXV0YXRlKFxuICAgICAgR2VuZGVyID0gZmFjdG9yKEdlbmRlciwgbGFiZWxzID0gYyhcXE1hbGVcXCwgXFxGZW1hbGVcXCkpLFxuICAgICAgRXRobmljaXR5ID0gZmFjdG9yKEV0aG5pY2l0eSwgbGFiZWxzID0gYyhcXENhdWNhc2lhblxcLCBcXEFmcmljYW4gQW1lcmljYW5cXCwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcQXNpYW5cXCwgXFxPdGhlclxcKSksXG4gICAgICBTb2Npb2Vjb25vbWljU3RhdHVzID0gZmFjdG9yKFNvY2lvZWNvbm9taWNTdGF0dXMsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKFxcTG93XFwsIFxcTWlkZGxlXFwsIFxcSGlnaFxcKSlcbiAgICApICU+JVxuICAgIHNlbGVjdChHZW5kZXIsIEV0aG5pY2l0eSwgU29jaW9lY29ub21pY1N0YXR1cywgR0ZSLCBIYkExYywgXG4gICAgICAgICAgIFN5c3RvbGljQlAsIFF1YWxpdHlPZkxpZmVTY29yZSkgJT4lXG4gICAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKEdGUiwgSGJBMWMsIFN5c3RvbGljQlAsIFF1YWxpdHlPZkxpZmVTY29yZSksXG4gICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gXFxCaW9tYXJrZXJcXCwgdmFsdWVzX3RvID0gXFxWYWx1ZVxcKVxuICBcbiAgZ2dwbG90KGRhdGFfZGVtbywgYWVzKHggPSBTb2Npb2Vjb25vbWljU3RhdHVzLCB5ID0gVmFsdWUsIGZpbGwgPSBHZW5kZXIpKSArXG4gICAgZ2VvbV9ib3hwbG90KGFscGhhID0gMC43LCBvdXRsaWVyLnNpemUgPSAwLjUpICtcbiAgICBmYWNldF9ncmlkKEJpb21hcmtlciB+IEV0aG5pY2l0eSwgc2NhbGVzID0gXFxmcmVlX3lcXCkgK1xuICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSBcXFNldDJcXCkgK1xuICAgIGxhYnModGl0bGUgPSBcXEJpb21hcmNhZG9yZXMgcG9yIERlbW9ncmFmw61hIChHw6luZXJvXG4ifQ== -->
plot_demographic_boxplots <- function(data) {
data_demo <- data %>%
mutate(
Gender = factor(Gender, labels = c(\Male\, \Female\)),
Ethnicity = factor(Ethnicity, labels = c(\Caucasian\, \African American\,
\Asian\, \Other\)),
SocioeconomicStatus = factor(SocioeconomicStatus,
labels = c(\Low\, \Middle\, \High\))
) %>%
select(Gender, Ethnicity, SocioeconomicStatus, GFR, HbA1c,
SystolicBP, QualityOfLifeScore) %>%
pivot_longer(cols = c(GFR, HbA1c, SystolicBP, QualityOfLifeScore),
names_to = \Biomarker\, values_to = \Value\)
ggplot(data_demo, aes(x = SocioeconomicStatus, y = Value, fill = Gender)) +
geom_boxplot(alpha = 0.7, outlier.size = 0.5) +
facet_grid(Biomarker ~ Ethnicity, scales = \free_y\) +
scale_fill_brewer(palette = \Set2\) +
labs(title = \Biomarcadores por DemografÃa (Género
```r
plot_demographic_boxplots <- function(data) {
data_demo <- data %>%
mutate(
Gender = factor(Gender, labels = c(\Male\, \Female\)),
Ethnicity = factor(Ethnicity, labels = c(\Caucasian\, \African American\,
\Asian\, \Other\)),
SocioeconomicStatus = factor(SocioeconomicStatus,
labels = c(\Low\, \Middle\, \High\))
) %>%
select(Gender, Ethnicity, SocioeconomicStatus, GFR, HbA1c,
SystolicBP, QualityOfLifeScore) %>%
pivot_longer(cols = c(GFR, HbA1c, SystolicBP, QualityOfLifeScore),
names_to = \Biomarker\, values_to = \Value\)
ggplot(data_demo, aes(x = SocioeconomicStatus, y = Value, fill = Gender)) +
geom_boxplot(alpha = 0.7, outlier.size = 0.5) +
facet_grid(Biomarker ~ Ethnicity, scales = \free_y\) +
scale_fill_brewer(palette = \Set2\) +
labs(title = \Biomarcadores por DemografÃa (Género
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdF9xb2xfYnViYmxlIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgYnViYmxlX2RhdGEgPC0gZGF0YSAlPiVcbiAgICBtdXRhdGUoXG4gICAgICBTZXZlcml0eV9TY29yZSA9IChTZXJ1bUNyZWF0aW5pbmUgLSBtaW4oU2VydW1DcmVhdGluaW5lKSkgLyBcbiAgICAgICAgKG1heChTZXJ1bUNyZWF0aW5pbmUpIC0gbWluKFNlcnVtQ3JlYXRpbmluZSkpICogMTAsXG4gICAgICBEaWFnbm9zaXMgPSBmYWN0b3IoRGlhZ25vc2lzLCBsYWJlbHMgPSBjKFwiTm8gQ0tEXCIsIFwiQ0tEXCIpKVxuICAgIClcbiAgXG4gIGdncGxvdChidWJibGVfZGF0YSwgYWVzKHggPSBGYXRpZ3VlTGV2ZWxzLCB5ID0gUXVhbGl0eU9mTGlmZVNjb3JlKSkgK1xuICAgIGdlb21fcG9pbnQoYWVzKHNpemUgPSBTZXZlcml0eV9TY29yZSwgY29sb3IgPSBHRlIsIHNoYXBlID0gRGlhZ25vc2lzKSwgXG4gICAgICAgICAgICAgICBhbHBoYSA9IDAuNikgK1xuICAgIHNjYWxlX2NvbG9yX3ZpcmlkaXMob3B0aW9uID0gXCJtYWdtYVwiLCBkaXJlY3Rpb24gPSAtMSwgXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gXCJHRlJcXG4obUwvbWluLzEuNzNtwrIpXCIpICtcbiAgICBzY2FsZV9zaXplX2NvbnRpbnVvdXMocmFuZ2UgPSBjKDEsIDEwKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBcIlNldmVyaWRhZFxcbihDcmVhdGluaW5hKVwiKSArXG4gICAgZ2VvbV9zbW9vdGgoYWVzKGNvbG9yID0gTlVMTCwgc2l6ZSA9IE5VTEwpLCBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgICAgICAgICAgIHNlID0gVFJVRSwgY29sb3IgPSBcImJsYWNrXCIsIGxpbmV0eXBlID0gXCJkYXNoZWRcIikgK1xuICAgIGxhYnModGl0bGUgPSBcIkNhbGlkYWQgZGUgVmlkYSB2cyBGYXRpZ2EgKHRhbWHDsW8gPSBTZXZlcmlkYWQsIGNvbG9yID0gR0ZSKVwiLFxuICAgICAgICAgeCA9IFwiTml2ZWwgZGUgRmF0aWdhICgwLTEwKVwiLFxuICAgICAgICAgeSA9IFwiU2NvcmUgZGUgQ2FsaWRhZCBkZSBWaWRhICgwLTEwMClcIikgK1xuICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIGZhY2UgPSBcImJvbGRcIiksXG4gICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gXCJyaWdodFwiKVxufVxuYGBgIn0= -->
```r
plot_qol_bubble <- function(data) {
bubble_data <- data %>%
mutate(
Severity_Score = (SerumCreatinine - min(SerumCreatinine)) /
(max(SerumCreatinine) - min(SerumCreatinine)) * 10,
Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\))
)
ggplot(bubble_data, aes(x = FatigueLevels, y = QualityOfLifeScore)) +
geom_point(aes(size = Severity_Score, color = GFR, shape = Diagnosis),
alpha = 0.6) +
scale_color_viridis(option = \magma\, direction = -1,
name = \GFR\n(mL/min/1.73m²)\) +
scale_size_continuous(range = c(1, 10),
name = \Severidad\n(Creatinina)\) +
geom_smooth(aes(color = NULL, size = NULL), method = \lm\,
se = TRUE, color = \black\, linetype = \dashed\) +
labs(title = \Calidad de Vida vs Fatiga (tamaño = Severidad
```r
plot_qol_bubble <- function(data) {
bubble_data <- data %>%
mutate(
Severity_Score = (SerumCreatinine - min(SerumCreatinine)) /
(max(SerumCreatinine) - min(SerumCreatinine)) * 10,
Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\))
)
ggplot(bubble_data, aes(x = FatigueLevels, y = QualityOfLifeScore)) +
geom_point(aes(size = Severity_Score, color = GFR, shape = Diagnosis),
alpha = 0.6) +
scale_color_viridis(option = \magma\, direction = -1,
name = \GFR\n(mL/min/1.73m²)\) +
scale_size_continuous(range = c(1, 10),
name = \Severidad\n(Creatinina)\) +
geom_smooth(aes(color = NULL, size = NULL), method = \lm\,
se = TRUE, color = \black\, linetype = \dashed\) +
labs(title = \Calidad de Vida vs Fatiga (tamaño = Severidad
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdF9tZWRpY2F0aW9uX3Zpb2xpbnMgPC0gZnVuY3Rpb24oZGF0YSkge1xuICBtZWRfZGF0YSA8LSBkYXRhICU+JVxuICAgIG11dGF0ZShcbiAgICAgIFRyZWF0bWVudF9JbnRlbnNpdHkgPSBBQ0VJbmhpYml0b3JzICsgRGl1cmV0aWNzICsgU3RhdGlucyArIFxuICAgICAgICBBbnRpZGlhYmV0aWNNZWRpY2F0aW9ucyxcbiAgICAgIFRyZWF0bWVudF9Hcm91cCA9IGNhc2Vfd2hlbihcbiAgICAgICAgVHJlYXRtZW50X0ludGVuc2l0eSA9PSAwIH4gXCJObyBNZWRzXCIsXG4gICAgICAgIFRyZWF0bWVudF9JbnRlbnNpdHkgPD0gMiB+IFwiTG93ICgxLTIpXCIsXG4gICAgICAgIFRSVUUgfiBcIkhpZ2ggKDMtNClcIlxuICAgICAgKSxcbiAgICAgIFRyZWF0bWVudF9Hcm91cCA9IGZhY3RvcihUcmVhdG1lbnRfR3JvdXAsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoXCJObyBNZWRzXCIsIFwiTG93ICgxLTIpXCIsIFwiSGlnaCAoMy00KVwiKSlcbiAgICApICU+JVxuICAgIHNlbGVjdChUcmVhdG1lbnRfR3JvdXAsIEdGUiwgSGJBMWMsIFN5c3RvbGljQlAsIFF1YWxpdHlPZkxpZmVTY29yZSkgJT4lXG4gICAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBjKEdGUiwgSGJBMWMsIFN5c3RvbGljQlAsIFF1YWxpdHlPZkxpZmVTY29yZSksXG4gICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gXCJPdXRjb21lXCIsIHZhbHVlc190byA9IFwiVmFsdWVcIilcbiAgXG4gIGdncGxvdChtZWRfZGF0YSwgYWVzKHggPSBUcmVhdG1lbnRfR3JvdXAsIHkgPSBWYWx1ZSwgZmlsbCA9IFRyZWF0bWVudF9Hcm91cCkpICtcbiAgICBnZW9tX3Zpb2xpbihhbHBoYSA9IDAuNywgdHJpbSA9IEZBTFNFKSArXG4gICAgZ2VvbV9ib3hwbG90KHdpZHRoID0gMC4yLCBhbHBoYSA9IDAuOCwgb3V0bGllci5zaXplID0gMC41KSArXG4gICAgZmFjZXRfd3JhcCh+IE91dGNvbWUsIHNjYWxlcyA9IFwiZnJlZV95XCIsIG5jb2wgPSAyKSArXG4gICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9IFwiWWxPclJkXCIpICtcbiAgICBsYWJzKHRpdGxlID0gXCJEaXN0cmlidWNpw7NuIGRlIE91dGNvbWVzIENsw61uaWNvcyBwb3IgSW50ZW5zaWRhZCBkZSBUcmF0YW1pZW50b1wiLFxuICAgICAgICAgc3VidGl0bGUgPSBcIkludGVuc2lkYWQgPSBzdW1hIGRlIG1lZGljYW1lbnRvcyBjbGF2ZSAoQUNFaSwgRGl1csOpdGljbywgRXN0YXRpbmEsIEFudGlkaWFiw6l0aWNvKVwiLFxuICAgICAgICAgeCA9IFwiR3J1cG8gZGUgVHJhdGFtaWVudG9cIixcbiAgICAgICAgIHkgPSBcIlZhbG9yIGRlbCBPdXRjb21lXCIsXG4gICAgICAgICBmaWxsID0gXCJJbnRlbnNpZGFkXCIpICtcbiAgICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGZhY2UgPSBcImJvbGRcIiksXG4gICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxKSxcbiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXCJib2xkXCIpLFxuICAgICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUsIHNpemUgPSA5KSlcbn1cbmBgYCJ9 -->
```r
plot_medication_violins <- function(data) {
med_data <- data %>%
mutate(
Treatment_Intensity = ACEInhibitors + Diuretics + Statins +
AntidiabeticMedications,
Treatment_Group = case_when(
Treatment_Intensity == 0 ~ \No Meds\,
Treatment_Intensity <= 2 ~ \Low (1-2)\,
TRUE ~ \High (3-4)\
),
Treatment_Group = factor(Treatment_Group,
levels = c(\No Meds\, \Low (1-2)\, \High (3-4)\))
) %>%
select(Treatment_Group, GFR, HbA1c, SystolicBP, QualityOfLifeScore) %>%
pivot_longer(cols = c(GFR, HbA1c, SystolicBP, QualityOfLifeScore),
names_to = \Outcome\, values_to = \Value\)
ggplot(med_data, aes(x = Treatment_Group, y = Value, fill = Treatment_Group)) +
geom_violin(alpha = 0.7, trim = FALSE) +
geom_boxplot(width = 0.2, alpha = 0.8, outlier.size = 0.5) +
facet_wrap(~ Outcome, scales = \free_y\, ncol = 2) +
scale_fill_brewer(palette = \YlOrRd\) +
labs(title = \Distribución de Outcomes ClÃnicos por Intensidad de Tratamiento\,
subtitle = \Intensidad = suma de medicamentos clave (ACEi
```r
plot_medication_violins <- function(data) {
med_data <- data %>%
mutate(
Treatment_Intensity = ACEInhibitors + Diuretics + Statins +
AntidiabeticMedications,
Treatment_Group = case_when(
Treatment_Intensity == 0 ~ \No Meds\,
Treatment_Intensity <= 2 ~ \Low (1-2)\,
TRUE ~ \High (3-4)\
),
Treatment_Group = factor(Treatment_Group,
levels = c(\No Meds\, \Low (1-2)\, \High (3-4)\))
) %>%
select(Treatment_Group, GFR, HbA1c, SystolicBP, QualityOfLifeScore) %>%
pivot_longer(cols = c(GFR, HbA1c, SystolicBP, QualityOfLifeScore),
names_to = \Outcome\, values_to = \Value\)
ggplot(med_data, aes(x = Treatment_Group, y = Value, fill = Treatment_Group)) +
geom_violin(alpha = 0.7, trim = FALSE) +
geom_boxplot(width = 0.2, alpha = 0.8, outlier.size = 0.5) +
facet_wrap(~ Outcome, scales = \free_y\, ncol = 2) +
scale_fill_brewer(palette = \YlOrRd\) +
labs(title = \Distribución de Outcomes ClÃnicos por Intensidad de Tratamiento\,
subtitle = \Intensidad = suma de medicamentos clave (ACEi
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdF9kZW5zaXR5X2NvbnRvdXIgPC0gZnVuY3Rpb24oZGF0YSkge1xuICBkYXRhX2NvbnRvdXIgPC0gZGF0YSAlPiVcbiAgICBtdXRhdGUoRGlhZ25vc2lzID0gZmFjdG9yKERpYWdub3NpcywgbGFiZWxzID0gYyhcIk5vIENLRFwiLCBcIkNLRFwiKSkpXG4gIFxuICBnZ3Bsb3QoZGF0YV9jb250b3VyLCBhZXMoeCA9IEhiQTFjLCB5ID0gR0ZSKSkgK1xuICAgIHN0YXRfZGVuc2l0eV8yZChhZXMoZmlsbCA9IGFmdGVyX3N0YXQobGV2ZWwpKSwgZ2VvbSA9IFwicG9seWdvblwiLCBhbHBoYSA9IDAuNSkgK1xuICAgIGdlb21fcG9pbnQoYWVzKGNvbG9yID0gRGlhZ25vc2lzKSwgYWxwaGEgPSAwLjMsIHNpemUgPSAxKSArXG4gICAgc2NhbGVfZmlsbF92aXJpZGlzKG9wdGlvbiA9IFwiY2l2aWRpc1wiLCBuYW1lID0gXCJEZW5zaWRhZFwiKSArXG4gICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoXCJObyBDS0RcIiA9IFwiIzAwQkEzOFwiLCBcIkNLRFwiID0gXCIjRjg3NjZEXCIpKSArXG4gICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gNjAsIGxpbmV0eXBlID0gXCJkYXNoZWRcIiwgY29sb3IgPSBcInJlZFwiLCBzaXplID0gMC44KSArXG4gICAgYW5ub3RhdGUoXCJ0ZXh0XCIsIHggPSA5LCB5ID0gNjUsIGxhYmVsID0gXCJHRlIgPSA2MCAodW1icmFsIENLRClcIiwgXG4gICAgICAgICAgICAgY29sb3IgPSBcInJlZFwiLCBzaXplID0gMykgK1xuICAgIGxhYnModGl0bGUgPSBcIkNvbnRvcm5vIGRlIERlbnNpZGFkOiBHRlIgdnMgSGJBMWNcIixcbiAgICAgICAgIHN1YnRpdGxlID0gXCJJZGVudGlmaWNhY2nDs24gZGUgY2x1c3RlcnMgZGUgcmllc2dvIG1ldGFiw7NsaWNvLXJlbmFsXCIsXG4gICAgICAgICB4ID0gXCJIYkExYyAoJSlcIixcbiAgICAgICAgIHkgPSBcIkdGUiAobUwvbWluLzEuNzNtwrIpXCIpICtcbiAgICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXCJib2xkXCIpLFxuICAgICAgICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKVxufVxuYGBgIn0= -->
```r
plot_density_contour <- function(data) {
data_contour <- data %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggplot(data_contour, aes(x = HbA1c, y = GFR)) +
stat_density_2d(aes(fill = after_stat(level)), geom = \polygon\, alpha = 0.5) +
geom_point(aes(color = Diagnosis), alpha = 0.3, size = 1) +
scale_fill_viridis(option = \cividis\, name = \Densidad\) +
scale_color_manual(values = c(\No CKD\ = \#00BA38\, \CKD\ = \#F8766D\)) +
geom_hline(yintercept = 60, linetype = \dashed\, color = \red\, size = 0.8) +
annotate(\text\, x = 9, y = 65, label = \GFR = 60 (umbral CKD)\,
color = \red\, size = 3) +
labs(title = \Contorno de Densidad: GFR vs HbA1c\,
subtitle = \Identificación de clusters de riesgo metabólico-renal\,
x = \HbA1c (%)\,
y = \GFR (mL/min/1.73m²)\) +
theme(plot.title = element_text(hjust = 0.5, face = \bold\),
plot.subtitle = element_text(hjust = 0.5))
}
```
<!-- rnb-source-end -->
```r
plot_density_contour <- function(data) {
data_contour <- data %>%
mutate(Diagnosis = factor(Diagnosis, labels = c(\No CKD\, \CKD\)))
ggplot(data_contour, aes(x = HbA1c, y = GFR)) +
stat_density_2d(aes(fill = after_stat(level)), geom = \polygon\, alpha = 0.5) +
geom_point(aes(color = Diagnosis), alpha = 0.3, size = 1) +
scale_fill_viridis(option = \cividis\, name = \Densidad\) +
scale_color_manual(values = c(\No CKD\ = \#00BA38\, \CKD\ = \#F8766D\)) +
geom_hline(yintercept = 60, linetype = \dashed\, color = \red\, size = 0.8) +
annotate(\text\, x = 9, y = 65, label = \GFR = 60 (umbral CKD)\,
color = \red\, size = 3) +
labs(title = \Contorno de Densidad: GFR vs HbA1c\,
subtitle = \Identificación de clusters de riesgo metabólico-renal\,
x = \HbA1c (%)\,
y = \GFR (mL/min/1.73m²)\) +
theme(plot.title = element_text(hjust = 0.5, face = \bold\),
plot.subtitle = element_text(hjust = 0.5))
}
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVjR3h2ZEY5aFoyVmZjbWxrWjJWeklEd3RJR1oxYm1OMGFXOXVLR1JoZEdFcElIdGNiaUFnYkdsaWNtRnllU2huWjNKcFpHZGxjeWxjYmlBZ1hHNGdJSEpwWkdkbFgyUmhkR0VnUEMwZ1pHRjBZU0FsUGlWY2JpQWdJQ0J0ZFhSaGRHVW9YRzRnSUNBZ0lDQkRiMjF2Y21KcFpHbDBlVjlRY205bWFXeGxJRDBnWTJGelpWOTNhR1Z1S0Z4dUlDQWdJQ0FnSUNCR1lXMXBiSGxJYVhOMGIzSjVSR2xoWW1WMFpYTWdQVDBnTVNBbUlFWmhiV2xzZVVocGMzUnZjbmxJZVhCbGNuUmxibk5wYjI0Z1BUMGdNU0IrSUZ4dUlDQWdJQ0FnSUNBZ0lGd2lSR2xoWW1WMFpYTWdLeUJJVkU1Y0lpeGNiaUFnSUNBZ0lDQWdSbUZ0YVd4NVNHbHpkRzl5ZVVScFlXSmxkR1Z6SUQwOUlERWdmaUJjSWtScFlXSmxkR1Z6SUU5dWJIbGNJaXhjYmlBZ0lDQWdJQ0FnUm1GdGFXeDVTR2x6ZEc5eWVVaDVjR1Z5ZEdWdWMybHZiaUE5UFNBeElINGdYQ0pJVkU0Z1QyNXNlVndpTEZ4dUlDQWdJQ0FnSUNCR1lXMXBiSGxJYVhOMGIzSjVTMmxrYm1WNVJHbHpaV0Z6WlNBOVBTQXhJSDRnWENKTGFXUnVaWGtnUkdselpXRnpaVndpTEZ4dUlDQWdJQ0FnSUNCVVVsVkZJSDRnWENKT2IyNWxYQ0pjYmlBZ0lDQWdJQ2xjYmlBZ0lDQXBJQ1UrSlZ4dUlDQWdJR1pwYkhSbGNpaERiMjF2Y21KcFpHbDBlVjlRY205bWFXeGxJQ0U5SUZ3aVRtOXVaVndpS1Z4dUlDQmNiaUFnWjJkd2JHOTBLSEpwWkdkbFgyUmhkR0VzSUdGbGN5aDRJRDBnUVdkbExDQjVJRDBnUTI5dGIzSmlhV1JwZEhsZlVISnZabWxzWlN3Z1ptbHNiQ0E5SUVOdmJXOXlZbWxrYVhSNVgxQnliMlpwYkdVcEtTQXJYRzRnSUNBZ1oyVnZiVjlrWlc1emFYUjVYM0pwWkdkbGN5aGhiSEJvWVNBOUlEQXVOeXdnYzJOaGJHVWdQU0F4TGpVcElDdGNiaUFnSUNCelkyRnNaVjltYVd4c1gzWnBjbWxrYVhNb1pHbHpZM0psZEdVZ1BTQlVVbFZGTENCdmNIUnBiMjRnUFNCY0luUjFjbUp2WENJcElDdGNiaUFnSUNCc1lXSnpLSFJwZEd4bElEMGdYQ0pFYVhOMGNtbGlkV05wdzdOdUlHUmxJRVZrWVdRZ2MyVm53N3B1SUVocGMzUnZjbWxoSUVaaGJXbHNhV0Z5SUdSbElFTnZiVzl5WW1sc2FXUmhaR1Z6WENJc1hHNGdJQ0FnSUNBZ0lDQjRJRDBnWENKRlpHRmtJQ2hodzdGdmN5bGNJaXhjYmlBZ0lDQWdJQ0FnSUhrZ1BTQmNJbEJsY21acGJDQmtaU0JEYjIxdmNtSnBiR2xrWVdRZ1JtRnRhV3hwWVhKY0lpa2dLMXh1SUNBZ0lIUm9aVzFsWDNKcFpHZGxjeWdwSUN0Y2JpQWdJQ0IwYUdWdFpTaHNaV2RsYm1RdWNHOXphWFJwYjI0Z1BTQmNJbTV2Ym1WY0lpeGNiaUFnSUNBZ0lDQWdJQ0J3Ykc5MExuUnBkR3hsSUQwZ1pXeGxiV1Z1ZEY5MFpYaDBLR2hxZFhOMElEMGdNQzQxTENCbVlXTmxJRDBnWENKaWIyeGtYQ0lwS1Z4dWZWeHVZR0JnSW4wPSAtLT5cblxuYGBgclxucGxvdF9hZ2VfcmlkZ2VzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgbGlicmFyeShnZ3JpZGdlcylcbiAgXG4gIHJpZGdlX2RhdGEgPC0gZGF0YSAlPiVcbiAgICBtdXRhdGUoXG4gICAgICBDb21vcmJpZGl0eV9Qcm9maWxlID0gY2FzZV93aGVuKFxuICAgICAgICBGYW1pbHlIaXN0b3J5RGlhYmV0ZXMgPT0gMSAmIEZhbWlseUhpc3RvcnlIeXBlcnRlbnNpb24gPT0gMSB+IFxuICAgICAgICAgIFxcRGlhYmV0ZXMgKyBIVE5cXCxcbiAgICAgICAgRmFtaWx5SGlzdG9yeURpYWJldGVzID09IDEgfiBcXERpYWJldGVzIE9ubHlcXCxcbiAgICAgICAgRmFtaWx5SGlzdG9yeUh5cGVydGVuc2lvbiA9PSAxIH4gXFxIVE4gT25seVxcLFxuICAgICAgICBGYW1pbHlIaXN0b3J5S2lkbmV5RGlzZWFzZSA9PSAxIH4gXFxLaWRuZXkgRGlzZWFzZVxcLFxuICAgICAgICBUUlVFIH4gXFxOb25lXFxcbiAgICAgIClcbiAgICApICU+JVxuICAgIGZpbHRlcihDb21vcmJpZGl0eV9Qcm9maWxlICE9IFxcTm9uZVxcKVxuICBcbiAgZ2dwbG90KHJpZGdlX2RhdGEsIGFlcyh4ID0gQWdlLCB5ID0gQ29tb3JiaWRpdHlfUHJvZmlsZSwgZmlsbCA9IENvbW9yYmlkaXR5X1Byb2ZpbGUpKSArXG4gICAgZ2VvbV9kZW5zaXR5X3JpZGdlcyhhbHBoYSA9IDAuNywgc2NhbGUgPSAxLjUpICtcbiAgICBzY2FsZV9maWxsX3ZpcmlkaXMoZGlzY3JldGUgPSBUUlVFLCBvcHRpb24gPSBcXHR1cmJvXFwpICtcbiAgICBsYWJzKHRpdGxlID0gXFxEaXN0cmlidWNpw7NuIGRlIEVkYWQgc2Vnw7puIEhpc3RvcmlhIEZhbWlsaWFyIGRlIENvbW9yYmlsaWRhZGVzXFwsXG4gICAgICAgICB4ID0gXFxFZGFkIChhw7FvcylcXCxcbiAgICAgICAgIHkgPSBcXFBlcmZpbCBkZSBDb21vcmJpbGlkYWQgRmFtaWxpYXJcXCkgK1xuICAgIHRoZW1lX3JpZGdlcygpICtcbiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSBcXG5vbmVcXCxcbiAgICAgICAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGhqdXN0ID0gMC41LCBmYWNlID0gXFxib2xkXFwpKVxufVxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->
plot_age_ridges <- function(data) {
library(ggridges)
ridge_data <- data %>%
mutate(
Comorbidity_Profile = case_when(
FamilyHistoryDiabetes == 1 & FamilyHistoryHypertension == 1 ~
\Diabetes + HTN\,
FamilyHistoryDiabetes == 1 ~ \Diabetes Only\,
FamilyHistoryHypertension == 1 ~ \HTN Only\,
FamilyHistoryKidneyDisease == 1 ~ \Kidney Disease\,
TRUE ~ \None\
)
) %>%
filter(Comorbidity_Profile != \None\)
ggplot(ridge_data, aes(x = Age, y = Comorbidity_Profile, fill = Comorbidity_Profile)) +
geom_density_ridges(alpha = 0.7, scale = 1.5) +
scale_fill_viridis(discrete = TRUE, option = \turbo\) +
labs(title = \Distribución de Edad según Historia Familiar de Comorbilidades\,
x = \Edad (años)\,
y = \Perfil de Comorbilidad Familiar\) +
theme_ridges() +
theme(legend.position = \none\,
plot.title = element_text(hjust = 0.5, face = \bold\))
}
````
```r
plot_age_ridges <- function(data) {
library(ggridges)
ridge_data <- data %>%
mutate(
Comorbidity_Profile = case_when(
FamilyHistoryDiabetes == 1 & FamilyHistoryHypertension == 1 ~
\Diabetes + HTN\,
FamilyHistoryDiabetes == 1 ~ \Diabetes Only\,
FamilyHistoryHypertension == 1 ~ \HTN Only\,
FamilyHistoryKidneyDisease == 1 ~ \Kidney Disease\,
TRUE ~ \None\
)
) %>%
filter(Comorbidity_Profile != \None\)
ggplot(ridge_data, aes(x = Age, y = Comorbidity_Profile, fill = Comorbidity_Profile)) +
geom_density_ridges(alpha = 0.7, scale = 1.5) +
scale_fill_viridis(discrete = TRUE, option = \turbo\) +
labs(title = \Distribución de Edad según Historia Familiar de Comorbilidades\,
x = \Edad (años)\,
y = \Perfil de Comorbilidad Familiar\) +
theme_ridges() +
theme(legend.position = \none\,
plot.title = element_text(hjust = 0.5, face = \bold\))
}
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVaMlZ1WlhKaGRHVmZZV3hzWDNCc2IzUnpJRHd0SUdaMWJtTjBhVzl1S0dSaGRHRXBJSHRjYmlBZ0l5QkRjbVZoY2lCc2FYTjBZU0J3WVhKaElHRnNiV0ZqWlc1aGNpQndiRzkwYzF4dUlDQndiRzkwY3lBOExTQnNhWE4wS0NsY2JpQWdYRzRnSUdOaGRDaGNJa2RsYm1WeVlXNWtieUIyYVhOMVlXeHBlbUZqYVc5dVpYTWdiWFZzZEdsMllYSnBZV0pzWlhNdUxpNWNYRzVjWEc1Y0lpbGNiaUFnWEc0Z0lHTmhkQ2hjSWpFdUlFMWhkSEpwZWlCa1pTQkRiM0p5Wld4aFkybkRzMjRnWTI5dUlFTnNkWE4wWlhKcGJtY3VMaTVjWEc1Y0lpbGNiaUFnY0d4dmRGOWpiM0p5Wld4aGRHbHZibDl0WVhSeWFYZ29aR0YwWVNsY2JpQWdYRzRnSUdOaGRDaGNJakl1SUZCaGFYSndiRzkwSUdSbElGWmhjbWxoWW14bGN5QlNaVzVoYkdWekxpNHVYRnh1WENJcFhHNGdJSEJzYjNSekpISmxibUZzWDNCaGFYSnpJRHd0SUhCc2IzUmZjbVZ1WVd4ZmNHRnBjbk1vWkdGMFlTbGNiaUFnY0hKcGJuUW9jR3h2ZEhNa2NtVnVZV3hmY0dGcGNuTXBYRzRnSUZ4dUlDQmpZWFFvWENJekxpQlRZMkYwZEdWeWNHeHZkQ0EwUkNBb1IwWlNMVU55WldGMGFXNXBibUV0UldSaFpDMUNUVWtwTGk0dVhGeHVYQ0lwWEc0Z0lIQnNiM1J6SkdkbWNsOHpaQ0E4TFNCd2JHOTBYMmRtY2w4elpDaGtZWFJoS1Z4dUlDQndjbWx1ZENod2JHOTBjeVJuWm5KZk0yUXBYRzRnSUZ4dUlDQmpZWFFvWENJMExpQklaV0YwYldGd0lHUmxJRkJsY21acGJHVnpJRU5zdzYxdWFXTnZjeTR1TGx4Y2Jsd2lLVnh1SUNCd2JHOTBjeVJvWldGMGJXRndJRHd0SUhCc2IzUmZZMnhwYm1sallXeGZhR1ZoZEcxaGNDaGtZWFJoS1Z4dUlDQndjbWx1ZENod2JHOTBjeVJvWldGMGJXRndLVnh1SUNCY2JpQWdZMkYwS0Z3aU5TNGdVR0Z5WVd4c1pXd2dRMjl2Y21ScGJtRjBaWE1nS0VaaFkzUnZjbVZ6SUdSbElGSnBaWE5uYnlrdUxpNWNYRzVjSWlsY2JpQWdjR3h2ZEhNa2NHRnlZV3hzWld3Z1BDMGdjR3h2ZEY5d1lYSmhiR3hsYkY5amIyOXlaR2x1WVhSbGN5aGtZWFJoS1Z4dUlDQndjbWx1ZENod2JHOTBjeVJ3WVhKaGJHeGxiQ2xjYmlBZ1hHNGdJR05oZENoY0lqWXVJRUp2ZUhCc2IzUnpJRVJsYlc5bmNzT2habWxqYjNNZ1JtRmpaWFJoWkc5ekxpNHVYRnh1WENJcFhHNGdJSEJzYjNSekpHUmxiVzlmWW05NElEd3RJSEJzYjNSZlpHVnRiMmR5WVhCb2FXTmZZbTk0Y0d4dmRITW9aR0YwWVNsY2JpQWdjSEpwYm5Rb2NHeHZkSE1rWkdWdGIxOWliM2dwWEc0Z0lGeHVJQ0JqWVhRb1hDSTNMaUJDZFdKaWJHVWdRMmhoY25RZ0tFTmhiR2xrWVdRZ1pHVWdWbWxrWVNrdUxpNWNYRzVjSWlsY2JpQWdjR3h2ZEhNa1luVmlZbXhsSUR3dElIQnNiM1JmY1c5c1gySjFZbUpzWlNoa1lYUmhLVnh1SUNCd2NtbHVkQ2h3Ykc5MGN5UmlkV0ppYkdVcFhHNGdJRnh1SUNCallYUW9YQ0k0TGlCV2FXOXNhVzRnVUd4dmRITWdLRTFsWkdsallXMWxiblJ2Y3lrdUxpNWNYRzVjSWlsY2JpQWdjR3h2ZEhNa2RtbHZiR2x1Y3lBOExTQndiRzkwWDIxbFpHbGpZWFJwYjI1ZmRtbHZiR2x1Y3loa1lYUmhLVnh1SUNCd2NtbHVkQ2h3Ykc5MGN5UjJhVzlzYVc1ektWeHVJQ0JjYmlBZ1kyRjBLRndpT1M0Z1EyOXVkRzkxY2lCUWJHOTBJQ2hFWlc1emFXUmhaQ0JIUmxJdFNHSkJNV01wTGk0dVhGeHVYQ0lwWEc0Z0lIQnNiM1J6SkdOdmJuUnZkWElnUEMwZ2NHeHZkRjlrWlc1emFYUjVYMk52Ym5SdmRYSW9aR0YwWVNsY2JpQWdjSEpwYm5Rb2NHeHZkSE1rWTI5dWRHOTFjaWxjYmlBZ1hHNGdJR05oZENoY0lqRXdMaUJTYVdSblpTQlFiRzkwSUNoRlpHRmtJSEJ2Y2lCRGIyMXZjbUpwYkdsa1lXUmxjeWt1TGk1Y1hHNWNJaWxjYmlBZ2NHeHZkSE1rY21sa1oyVnpJRHd0SUhCc2IzUmZZV2RsWDNKcFpHZGxjeWhrWVhSaEtWeHVJQ0J3Y21sdWRDaHdiRzkwY3lSeWFXUm5aWE1wWEc0Z0lGeHVJQ0JqWVhRb1hDSmNYRzdDb1ZSdlpHRnpJR3hoY3lCMmFYTjFZV3hwZW1GamFXOXVaWE1nWjJWdVpYSmhaR0Z6SUdWNGFYUnZjMkZ0Wlc1MFpTRmNYRzVjSWlsY2JpQWdYRzRnSUhKbGRIVnliaWhwYm5acGMybGliR1VvY0d4dmRITXBLVnh1ZlZ4dVhHNWdZR0FpZlE9PSAtLT5cblxuYGBgclxuZ2VuZXJhdGVfYWxsX3Bsb3RzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgIyBDcmVhciBsaXN0YSBwYXJhIGFsbWFjZW5hciBwbG90c1xuICBwbG90cyA8LSBsaXN0KClcbiAgXG4gIGNhdChcIkdlbmVyYW5kbyB2aXN1YWxpemFjaW9uZXMgbXVsdGl2YXJpYWJsZXMuLi5cXG5cXG5cIilcbiAgXG4gIGNhdChcIjEuIE1hdHJpeiBkZSBDb3JyZWxhY2nDs24gY29uIENsdXN0ZXJpbmcuLi5cXG5cIilcbiAgcGxvdF9jb3JyZWxhdGlvbl9tYXRyaXgoZGF0YSlcbiAgXG4gIGNhdChcIjIuIFBhaXJwbG90IGRlIFZhcmlhYmxlcyBSZW5hbGVzLi4uXFxuXCIpXG4gIHBsb3RzJHJlbmFsX3BhaXJzIDwtIHBsb3RfcmVuYWxfcGFpcnMoZGF0YSlcbiAgcHJpbnQocGxvdHMkcmVuYWxfcGFpcnMpXG4gIFxuICBjYXQoXCIzLiBTY2F0dGVycGxvdCA0RCAoR0ZSLUNyZWF0aW5pbmEtRWRhZC1CTUkpLi4uXFxuXCIpXG4gIHBsb3RzJGdmcl8zZCA8LSBwbG90X2dmcl8zZChkYXRhKVxuICBwcmludChwbG90cyRnZnJfM2QpXG4gIFxuICBjYXQoXCI0LiBIZWF0bWFwIGRlIFBlcmZpbGVzIENsw61uaWNvcy4uLlxcblwiKVxuICBwbG90cyRoZWF0bWFwIDwtIHBsb3RfY2xpbmljYWxfaGVhdG1hcChkYXRhKVxuICBwcmludChwbG90cyRoZWF0bWFwKVxuICBcbiAgY2F0KFwiNS4gUGFyYWxsZWwgQ29vcmRpbmF0ZXMgKEZhY3RvcmVzIGRlIFJpZXNnbykuLi5cXG5cIilcbiAgcGxvdHMkcGFyYWxsZWwgPC0gcGxvdF9wYXJhbGxlbF9jb29yZGluYXRlcyhkYXRhKVxuICBwcmludChwbG90cyRwYXJhbGxlbClcbiAgXG4gIGNhdChcIjYuIEJveHBsb3RzIERlbW9ncsOhZmljb3MgRmFjZXRhZG9zLi4uXFxuXCIpXG4gIHBsb3RzJGRlbW9fYm94IDwtIHBsb3RfZGVtb2dyYXBoaWNfYm94cGxvdHMoZGF0YSlcbiAgcHJpbnQocGxvdHMkZGVtb19ib3gpXG4gIFxuICBjYXQoXCI3LiBCdWJibGUgQ2hhcnQgKENhbGlkYWQgZGUgVmlkYSkuLi5cXG5cIilcbiAgcGxvdHMkYnViYmxlIDwtIHBsb3RfcW9sX2J1YmJsZShkYXRhKVxuICBwcmludChwbG90cyRidWJibGUpXG4gIFxuICBjYXQoXCI4LiBWaW9saW4gUGxvdHMgKE1lZGljYW1lbnRvcykuLi5cXG5cIilcbiAgcGxvdHMkdmlvbGlucyA8LSBwbG90X21lZGljYXRpb25fdmlvbGlucyhkYXRhKVxuICBwcmludChwbG90cyR2aW9saW5zKVxuICBcbiAgY2F0KFwiOS4gQ29udG91ciBQbG90IChEZW5zaWRhZCBHRlItSGJBMWMpLi4uXFxuXCIpXG4gIHBsb3RzJGNvbnRvdXIgPC0gcGxvdF9kZW5zaXR5X2NvbnRvdXIoZGF0YSlcbiAgcHJpbnQocGxvdHMkY29udG91cilcbiAgXG4gIGNhdChcIjEwLiBSaWRnZSBQbG90IChFZGFkIHBvciBDb21vcmJpbGlkYWRlcykuLi5cXG5cIilcbiAgcGxvdHMkcmlkZ2VzIDwtIHBsb3RfYWdlX3JpZGdlcyhkYXRhKVxuICBwcmludChwbG90cyRyaWRnZXMpXG4gIFxuICBjYXQoXCJcXG7CoVRvZGFzIGxhcyB2aXN1YWxpemFjaW9uZXMgZ2VuZXJhZGFzIGV4aXRvc2FtZW50ZSFcXG5cIilcbiAgXG4gIHJldHVybihpbnZpc2libGUocGxvdHMpKVxufVxuXG5gYGBcblxuPCEtLSBybmItc291cmNlLWVuZCAtLT5cbiJ9 -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZ2VuZXJhdGVfYWxsX3Bsb3RzIDwtIGZ1bmN0aW9uKGRhdGEpIHtcbiAgIyBDcmVhciBsaXN0YSBwYXJhIGFsbWFjZW5hciBwbG90c1xuICBwbG90cyA8LSBsaXN0KClcbiAgXG4gIGNhdChcIkdlbmVyYW5kbyB2aXN1YWxpemFjaW9uZXMgbXVsdGl2YXJpYWJsZXMuLi5cXG5cXG5cIilcbiAgXG4gIGNhdChcIjEuIE1hdHJpeiBkZSBDb3JyZWxhY2nDs24gY29uIENsdXN0ZXJpbmcuLi5cXG5cIilcbiAgcGxvdF9jb3JyZWxhdGlvbl9tYXRyaXgoZGF0YSlcbiAgXG4gIGNhdChcIjIuIFBhaXJwbG90IGRlIFZhcmlhYmxlcyBSZW5hbGVzLi4uXFxuXCIpXG4gIHBsb3RzJHJlbmFsX3BhaXJzIDwtIHBsb3RfcmVuYWxfcGFpcnMoZGF0YSlcbiAgcHJpbnQocGxvdHMkcmVuYWxfcGFpcnMpXG4gIFxuICBjYXQoXCIzLiBTY2F0dGVycGxvdCA0RCAoR0ZSLUNyZWF0aW5pbmEtRWRhZC1CTUkpLi4uXFxuXCIpXG4gIHBsb3RzJGdmcl8zZCA8LSBwbG90X2dmcl8zZChkYXRhKVxuICBwcmludChwbG90cyRnZnJfM2QpXG4gIFxuICBjYXQoXCI0LiBIZWF0bWFwIGRlIFBlcmZpbGVzIENsw61uaWNvcy4uLlxcblwiKVxuICBwbG90cyRoZWF0bWFwIDwtIHBsb3RfY2xpbmljYWxfaGVhdG1hcChkYXRhKVxuICBwcmludChwbG90cyRoZWF0bWFwKVxuICBcbiAgY2F0KFwiNS4gUGFyYWxsZWwgQ29vcmRpbmF0ZXMgKEZhY3RvcmVzIGRlIFJpZXNnbykuLi5cXG5cIilcbiAgcGxvdHMkcGFyYWxsZWwgPC0gcGxvdF9wYXJhbGxlbF9jb29yZGluYXRlcyhkYXRhKVxuICBwcmludChwbG90cyRwYXJhbGxlbClcbiAgXG4gIGNhdChcIjYuIEJveHBsb3RzIERlbW9ncsOhZmljb3MgRmFjZXRhZG9zLi4uXFxuXCIpXG4gIHBsb3RzJGRlbW9fYm94IDwtIHBsb3RfZGVtb2dyYXBoaWNfYm94cGxvdHMoZGF0YSlcbiAgcHJpbnQocGxvdHMkZGVtb19ib3gpXG4gIFxuICBjYXQoXCI3LiBCdWJibGUgQ2hhcnQgKENhbGlkYWQgZGUgVmlkYSkuLi5cXG5cIilcbiAgcGxvdHMkYnViYmxlIDwtIHBsb3RfcW9sX2J1YmJsZShkYXRhKVxuICBwcmludChwbG90cyRidWJibGUpXG4gIFxuICBjYXQoXCI4LiBWaW9saW4gUGxvdHMgKE1lZGljYW1lbnRvcykuLi5cXG5cIilcbiAgcGxvdHMkdmlvbGlucyA8LSBwbG90X21lZGljYXRpb25fdmlvbGlucyhkYXRhKVxuICBwcmludChwbG90cyR2aW9saW5zKVxuICBcbiAgY2F0KFwiOS4gQ29udG91ciBQbG90IChEZW5zaWRhZCBHRlItSGJBMWMpLi4uXFxuXCIpXG4gIHBsb3RzJGNvbnRvdXIgPC0gcGxvdF9kZW5zaXR5X2NvbnRvdXIoZGF0YSlcbiAgcHJpbnQocGxvdHMkY29udG91cilcbiAgXG4gIGNhdChcIjEwLiBSaWRnZSBQbG90IChFZGFkIHBvciBDb21vcmJpbGlkYWRlcykuLi5cXG5cIilcbiAgcGxvdHMkcmlkZ2VzIDwtIHBsb3RfYWdlX3JpZGdlcyhkYXRhKVxuICBwcmludChwbG90cyRyaWRnZXMpXG4gIFxuICBjYXQoXCJcXG7CoVRvZGFzIGxhcyB2aXN1YWxpemFjaW9uZXMgZ2VuZXJhZGFzIGV4aXRvc2FtZW50ZSFcXG5cIilcbiAgXG4gIHJldHVybihpbnZpc2libGUocGxvdHMpKVxufVxuXG5gYGAifQ== -->
```r
generate_all_plots <- function(data) {
# Crear lista para almacenar plots
plots <- list()
cat("Generando visualizaciones multivariables...\n\n")
cat("1. Matriz de Correlación con Clustering...\n")
plot_correlation_matrix(data)
cat("2. Pairplot de Variables Renales...\n")
plots$renal_pairs <- plot_renal_pairs(data)
print(plots$renal_pairs)
cat("3. Scatterplot 4D (GFR-Creatinina-Edad-BMI)...\n")
plots$gfr_3d <- plot_gfr_3d(data)
print(plots$gfr_3d)
cat("4. Heatmap de Perfiles ClÃnicos...\n")
plots$heatmap <- plot_clinical_heatmap(data)
print(plots$heatmap)
cat("5. Parallel Coordinates (Factores de Riesgo)...\n")
plots$parallel <- plot_parallel_coordinates(data)
print(plots$parallel)
cat("6. Boxplots Demográficos Facetados...\n")
plots$demo_box <- plot_demographic_boxplots(data)
print(plots$demo_box)
cat("7. Bubble Chart (Calidad de Vida)...\n")
plots$bubble <- plot_qol_bubble(data)
print(plots$bubble)
cat("8. Violin Plots (Medicamentos)...\n")
plots$violins <- plot_medication_violins(data)
print(plots$violins)
cat("9. Contour Plot (Densidad GFR-HbA1c)...\n")
plots$contour <- plot_density_contour(data)
print(plots$contour)
cat("10. Ridge Plot (Edad por Comorbilidades)...\n")
plots$ridges <- plot_age_ridges(data)
print(plots$ridges)
cat("\n¡Todas las visualizaciones generadas exitosamente!\n")
return(invisible(plots))
}
plots <- generate_all_plots(ckd_data)
Generando visualizaciones multivariables...
1. Matriz de Correlación con Clustering...
2. Pairplot de Variables Renales...
3. Scatterplot 4D (GFR-Creatinina-Edad-BMI)...
4. Heatmap de Perfiles ClÃnicos...
5. Parallel Coordinates (Factores de Riesgo)...
6. Boxplots Demográficos Facetados...
7. Bubble Chart (Calidad de Vida)...
8. Violin Plots (Medicamentos)...
9. Contour Plot (Densidad GFR-HbA1c)...
10. Ridge Plot (Edad por Comorbilidades)...
¡Todas las visualizaciones generadas exitosamente!